Eine Schleife knallt dir aber alle Bilder der Reihe nach durch, so schnell wie sie kann. Davon hast du dann nicht viel. Und da dann noch Wartezeiten einbauen killt das ganze System.
Ich würd mir in einer globalen Variablen den Index des aktuellen Bilds merken und per Timeout (wie jetzt auch) eine Funktion aufrufen. Die bestimmt den nächsten Bildindex, zeigt das Bild und dann wieder Timeout...
also praktisch so etwa
var bildindex = 0;
var bilder = array...
function weiter()
{
bildindex++;
if (bildindex >= anzahlBilder)
bildindex = 0;
zeigeBild(bildindex);
timeout(weiter);
}