Hola Juan,
estodebe estarte pasando porque el buble se ejecuta tan rápido que no alcanzan a verse las imágenes. Asumo que sin el alert() la única que se ve es la última.
Una forma de conseguir lo que querés es sacar la variable de control de tu bucle fuera del ámbito, y que la llamada sea vía setInterval() para darle tiempo a que se vea cada una de las imágenes:
<script>
var i = 0;
function drawImage(){
...
dibplanet[i] = new Image();
dibplanet[i].src = "simbolos/" + nombreplanet[i] +".png";
dibplanet[i].onload = function() {
dib.drawImage(dibplanet[i], x, y, sca,sca);
};
...
}
</script>
</head>
<body onload="myVar=setInterval('drawImage()',100)">
Así se dibujan las imágenes de a una, con una pausa de 0.1 segundos. La función setInterval() reemplaza al bucle.
Para cortar el bucle al detectarlo con tu variable de control, tenés que llamar a
clearInterval(myVar);
posiblemente puedas hacer esto dentro de drawImage() al detectar la condición de terminación a través de la variable i