buenas...
nótese el orden de invocación. cuando el evento ocurre la función
maximize se invoca pero no transcurrido los cinco segundos. esto porque estás invocando
maximize y el resultado de este es lo que el timer está utilizando. es decir...
Código:
// lo que que tienes ;
onMouseOver="photoTimer=setTimeout(maximize('ID'), 5000)"
// lo que deberías tener ;
onmouseover="photoTimer=setTimeout(function(){maximize('ID');}, 5000);"
en la segunda línea lo que estás proporcionando es una función que luego el timer invocará.