The only way there is to prevent image access directly that I know of (aside from having to log in) is to check the HTTP Referer [sic]. Even though this methods isn't waterproof, most people deem it "good enough".
The easiest way is to check in your .htaccess file:
RewriteCond %HTTP_REFERER} !^http://www\\.example\\.com/ [NC]
RewriteRule \\.jpg$ - [F]
This will show a 403 forbidden if you access a .jpg directly, but the image will work fine when used on a website on your own domain (here, www.example.com).
If you want more info you can google for "prevent hotlinking apache"