Hola:
Hay un hilo de java que se encarga de repintar las ventanas. Ese hilo es el mimo en el que se ejecuta el código asociado a los eventos de ventanas, como pulsaciones de teclado, clicks de ratón, etc.
En tu caso, aunque no lo dices, seguramente ese código se ejecuta como consecuencia de la pulsación de un botón o algún otro evento. Ese código se ejecuta, por tanto, en el hilo de repintado de ventanas. Mientras tu código se ejecuta, las ventanas no se repintan.
Por ello, cambias la imagen y duermes varias veces, pero la ventana no se repinta. Lo hace sólo al final, todo de golpe, cuando terminas tu código.
Para evitar esto, debes lanzar un nuevo hilo lo antes posible. Puede ser algo como esto
Thread hilo = new Thread()
{
public void run()
{
// Aquí todo tu codigo de arriba
}
};
hilo.start();
Aquí puedes ver más detalles sobre el
hilo de AWT.
Se bueno.