Lo mismo pasa con las imágenes: se pueden guardan desde los temporales (suponiendo que por algún extraño motivo no se pueda desde el browser directamente), o simplemente haciendo una captura de pantalla.
En conclusión, todo lo que llega a la pantalla del usuario le pertenece y puede hacer con eso lo que quiera.
Sin embargo, lo que se suele hacer a la hora de proteger imágenes es aplicarles una marca de agua, es decir, una imágen translúcida que indica que la imágen no puede ser usada en otro sitio, para fines comerciales, etc.
Y es ahí donde la librería GD para tratamiento de imágenes entra en juego. Usando dicha librería, un poco de PHP y la magia de los PNG's se puede automatizar la tediosa tarea de aplicar marcas de agua a diferentes imágenes.
Primero es necesario crear una marca de agua en formato PNG. La ventaja principal de éste formato (indispensable en este caso) es que permite 255 niveles de transparencias, por lo que se puede lograr una imágen translúcida.
Una vez creada la marca, se puede aplicar en la imágen usando PHP. Pueden ver el código aqui...
<?php
$image = $_GET['i'];
$watermark = "water.png";
$im = imagecreatefrompng($watermark);
$ext = substr($image, -3);
if(strtolower($ext) == "gif") {
if (!$im2 = imagecreatefromgif($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "jpg") {
if (!$im2 = imagecreatefromjpeg($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "png") {
if (!$im2 = imagecreatefrompng($image)) {
echo "Error opening $image!"; exit;
}
} else {
die;
}
imagecopy($im2, $im, (imagesx($im2)/2)-(imagesx($im)/2), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
if($_GET[repeat]) {
$waterless = imagesx($im2) - imagesx($im);
$rest = ceil($waterless/imagesx($im)/2);
for($n=1; $n<=$rest; $n++) {
imagecopy($im2, $im, ((imagesx($im2)/2)-(imagesx($im)/2))-(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
imagecopy($im2, $im, ((imagesx($im2)/2)-(imagesx($im)/2))+(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
}
}
header("Content-Type: image/jpeg");
imagejpeg($im2);
imagedestroy($im);
imagedestroy($im2);
?>
Basta con pasarle la URL de la imágen a la cual se le desea aplicar la marca de agua a través de la URL...

watermark.php?i=../brown_lady.jpg
También pueden probar pasándole la variable repeat para que repita la marca de agua horizontalmente...

watermark.php?i=../brown_lady.jpg&repeat=t
Claro que es muy importante que restringan el acceso al directorio en donde se alojan las imágenes originales. Un simple .htaccess con la sentencia deny from all debería ser suficiente (en servers apache, claro).
Es importante tener en cuenta que el método no es infalible, cualquier persona con experiencia en el uso de un buen editor de imágenes puede remover la marca sin dejar rastro.