il problema è che con il register globals on $foto viene valorizzata, all'inizio dell'interpretazione della pagina, con il valore della variabile di sessione "foto"... e fin qui nulla di strano..

è curioso però che valorizzando tu esplicitamente $foto poi ti trovi modificata la variabile di sessione.. evidentemente entrambe le variabili sono puntatori alla stessa memoria.. quindi c'è poco da fare.. o rinomini le variabili o provi a modificare l'opzione del register globals... puoi modificarla con un .httaccess per l'intera directory oppure con la funzione iniset() pagina per pagina...