As others have pointed out, it's impossible. Common methods like disabling right-click, using CSS background and other scripts are fairly easy to avoid. The user can simply take a screenshot of your website, and then crop image.
I think watermarking the image is a much more effective way. This can be done manually (using Photoshop, Gimp or other tools), or automatically using a script. At the end it depends on how many images you want to protect, and how your website is built.
Here's a nice little PHP script that can watermark any image before it's downloaded by the user: http://andrecatita.com/code-projects/php-automatic-image-watermark/
NiceWatermark is a highly configurable plugin that adds a watermark to your images automatically.
Image-Watermark will allow you to watermark images during upload, or watermark existing images.