Las cabeceras típicas de "no caché" .. como por ejemplo estas:
Código PHP:
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
?>
www.php.net/header
no suelen dar buenos resultados para Imagenes (y otro tipo de archivos que llegan al cliente como los ".js" externos, css y demás).
Lo que se suele hacer en estos casos es generar un nombre de archivo de tu imagen "aleatorio" para que no sea igual a otro en "caché" y tu navegador entienda que ha de trabajar con la última y no las anteriores (bueno .. para el serán todas diferntes).
Puedes usar como "nombre aleatorio" .. un time() por ejemplo u otro código aleatorio:
Algo tipo ...
$nombre_archivo="miimagen_".time().".jpg";
Un saludo,