Hola:
A mi me gusta más usar un array de imágenes (sus url's)... y luego ir modificando el índice:
var imagenes = ["imagen1.gif" "imagen2.gif", "imagen5.jpg", "imagen.png"];
var indice = 0;
function cambiar() {
document.getElementById("imagen").src = imagenes[indice++ % imagenes.length];
}
setInterval("cambiar()", retardo)
Sobre los números aleatorios tal vez no aparezca alguna por mucho tiempo de la manera que tu planteas, también podría desordenar el array:
Arrays / Colecciones en javascript. Nuevos métodos...
Saludos