And how I can trust that files external to my database will be there when needed.
Roger, let me ask this question in response. Do you have an environment where you cannot trust people to not screw around with files that aren't supposed to be theirs?
The way most of us do this is that we set up a folder for the shared back-end database. Then with the back-end file in place, we create a child folder with an appropriate name. We read the contents of the .Connect string on a back-end-resident table, which gives us the device:/path/name.type sequence, and we can trim out the name.type part, tack on the sub-folder name to the device:/path/ string, and build a proper fully qualified file spec for whatever we are about to put into that folder - like one of your images. When storing that image for the first time, we also store the spec as a string. The difference is that images take dozens of KB but a file spec rarely takes more than 128 bytes unless you have some really abominable file or folder naming conventions.
When we want to display an image associated with a record, we load the spec to the property .Image in the appropriate image control using VBA in the appropriate section of the report that contains the other stuff we needed to see. You don't ever let users see that level of interaction, though. You hide everything behind forms so that nobody gets to "look inside the box" of your app.