Hola:
Hay otra forma de saber cuando una imagen a terminado de cargarse, y es usando el atributo complete de los objetos Image (y tag img)... Es algo más difícil de programar pero es algo más fiable...
var imagen;
function cargando() {
if (imagen.complete) actua();
else setTimeout("cargando()", 100);
}
function switchImage(cambia){
document.getElementById("preload").style.visibilit y="visible";
imagen = new Image();
imagen.src = cambia;
document.getElementById("grande").src = imagen.src;
//imagen.onload = actua
cargando();
}
Como puedes ver hace falta un paso intermedio recursivo...
Saludos