I seem to have faced similar problem accidentally. On Cent OS 6 I installed binary PostgreSQL 9.3 from PostgreSQL YUM repository. Compiled GDAL library version 1.11.0 from official stable tar. Then compiled PostGIS 2.1.4dev from original PostGIS repository. Unit tests showed, that libgdal was not loaded because it was not found. Error message looked similar to one in the original question. @Craig gave idea of using strace. The point is in attaching strace specifically to the process that was created just after the connection of client to DBMS. After you attach strace to DBMS, make client ask server to CREATE EXTENSION postgis on current database and see the output of strace. In my case it gave this:
open("/lib64/tls/x86_64/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/tls/x86_64", 0x7fffefb20290) = -1 ENOENT (No such file or directory)
open("/lib64/tls/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
open("/lib64/x86_64/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/x86_64", 0x7fffefb20290) = -1 ENOENT (No such file or directory)
open("/lib64/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64", {st_mode=S_IFDIR|0555, st_size=12288, ...}) = 0
open("/usr/lib64/tls/x86_64/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/tls/x86_64", 0x7fffefb20290) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
open("/usr/lib64/x86_64/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/x86_64", 0x7fffefb20290) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libgdal.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64", {st_mode=S_IFDIR|0555, st_size=12288, ...}) = 0
It shows which specific paths DBMS tries to find library in. In my situation library lies in /usr/local/lib/libgdal.so.1.18.0 with symbolic links for broader version use in same directory. My solution was to put symbolic links to these files into /usr/lib64 directory.