Use an asp.net handler instead of serving the images directly. This way you can have a granular control over authorization when serving the image.
Also, keep the images out of public folders, so users can't download them i.e. store them outside the folder for the web site or on a database.
Check this for a bit more info on handlers: http://www.wrox.com/WileyCDA/Section/id-291916.html. Both samples serve images, but they are focused on pretty specific scenarios. As you can see in those, you have complete control over the logic you implement in there, so you could check if the user requesting the image is authorized to download the specified image.