As the above link suggests, set up delayed loading (thought I've tried with SFML DLL's unsuccessfully, however you might be able to get them to work) and on windows you can use SetDLLDirectory (or AddDLLDirectory, depending) to add the DLL path.
Then, when your programs makes the first call to a function located in one of the delay loaded DLLs, it will attempt to load the library (instead of loading them upon startup).
However, not sure of a cross-platform solution (not too familiar with GCC); you might consider symbolic links or junctions, though they're not much better than having the DLLs in their own directory.