Il precaricamento avviene con le istruzioni:
var oggimm = new Image();
oggimm.src = "nomefile.gif";

Se hai un vettore con tutti i nomi (stringhe) ed un vettore per contenere tutti gli oggetti, puoi fare una cosa di questo tipo, al momento in cui carichi l'immagine precedente:
codice:
var nomeimm = new Array("primaimmagine.gif", "secondaimm.gif", ...);
var oggimm = new Array();
oggimm[0] = new Image();
oggimm[0].src = nomeimm[0].src; //precaricam prima imm.

var num = 0;

function shownext() {
  // mostra immagine successiva
  document.images['NOME_TAG_IMG'].src = oggimm[num].src;
  num++; // increm. contatore
  if(num>nomeimm.length) alert("arrivato alla fine");
  oggimm[num] = new Image();
  oggimm[num].src = nomeimm[num].src;  // precaricam imm succ.
}
Sarebbe utile anche un controllo per non lasciar proseguire se il caricamento dell'immagine successiva non e` completo.

Ciao
Michele