The Download Protect plugin for WP-Members allows you to load files such as images, documents, etc to a protected directory that requires the user to be logged in to access.
Files are uploaded to a separate folder within the main WP file upload folder structure and that folder is restricted from access. All files are served through a script-based process that prevents them from being accessed directly. If a user is not logged in, they can be directed to an error page that requires them to log in.
Even if the direct link to the file within the file structure were known, the file cannot be accessed directly.
There is a basic demo on the WP-Members Demo Site.
Get the Plugin
WP-Members Download Protect is a premium plugin available in the store.
Best Value: this plugin is included in the WP-Members Pro Bundle package.