Como otros han señalado, es imposible. Los métodos comunes como deshabilitar el clic derecho, usar el fondo CSS y otros scripts son bastante fáciles de evitar. El usuario simplemente puede tomar una captura de pantalla de su sitio web y luego recortar la imagen.
Creo que la marca de agua de la imagen es una forma mucho más efectiva. Esto se puede hacer manualmente (usando Photoshop, Gimp u otras herramientas), o automáticamente usando un script. Al final, depende de cuántas imágenes desee proteger y de cómo se construya su sitio web.
PHP
Aquí hay un pequeño script PHP que puede marcar cualquier imagen antes de que el usuario la descargue: http://andrecatita.com/code-projects/php-automatic-image-watermark/
Joomla
NiceWatermark es un complemento altamente configurable que agrega una marca de agua a sus imágenes automáticamente.
WordPress
Image-Watermark le permitirá marcar imágenes de agua durante la carga o marcar imágenes existentes.
JS
método de desactivación del clic derecho.