Hola:
Ya que también intentas aprender, te voy a decir como mejorar el código (solo la idea) y comentarte un error que descubrí después...
Bueno, sobre la mejora, sencillamente precargar las imágenes antes de usar el script... no te líes, y en principio no te preocupes por ello, pero es bueno que lo sepas...
Antes de decirte el error te explicaré someramente el código...
setInterval es una función que se ejecuta cada n milisegundos... ese n es el segundo parámetro, y el primer parámetro es la función que debe ejecutarse (en el ejemplo es la función cambiar()...)
O sea que cambiar se ejecuta cada 2000 milisegundos... 2 segundos...
Ahora te explico lo que hace cambiar()... como verás, no tiene parámetros, y usa variables globales...
Esas variables son el array imagenes (cuatro) y actual que está inicializado a 0...
var actual = 0;
Y la única línea de la función asigna al objeto document.images.cambiables (a su atributo src) una nueva imagen...
Con imagenes[actual++ % imagenes.length] uso el valor de la variable actual y luego lo incremento y lo divido por la longitud del array imagenes (imagenes.length)... de esa manera, cuando actual vale 1, se divide por 4 (imagens.length)... y uso el resto (%)...
Cuando actual tenga un valor grande (1000... 100000000...) se dividirá por 4, y se obtendrá un resto entre 0 y 3...
Pues ya se complica un poco la cosa, pero el razonamiento siempre es bueno saberlo...
Ahora te comento el error que descubrí (el comentario del primer párrafo)...
Con este código la primera actualización se hace a los 4 segundos, y no a los 2...
¿Quién descubrirá el error...?
Saludos