Io avevo ipotizzato un array di 16, invece tu hai 9 elementi. Devi scrivere 9 al posto di 16 alla variabile max.

Ma pensavo che Col fosse una funzione, mentre invece e` una matrice. Questo spiega anche perche` pensavo che i colori fossero troppo simili. Ora e` piu` chiaro.

La funzione va chiamata dal body. Non puoi farla girare nella head.

I tuoi loop vanno bene, ma la successione delle scritture forse genera un buffer overfloaw, per cui ti suggerivo di mettere un ritrado ogni gruppo di colori scritti.

Tra l'altro forse ho fatto un po' di confusione con i puntatori (passati e variabili globali, per cui riscrivo tutto. Inserisco anche alcuni controlli, tanto per verificare

codice:
var i=0;
var k=0;
var max=9; // fine loop
function Genera3(i,k) {
  for(var j=0; j<max; j++) {
    document.write("<div class='box' style='background-color: rgb("+Col[i]+","+Col[k]+","+Col[j]+")'>& nbsp;</div>"); 
  }
}

function Genera() {
  Genera3(i,k);
  k++;
  if(k>=max) {
    alert("ho scritto il blocco con i="+i);
    k=0; 
    i++;
    if(i>=max) {
      alert("ho finito");
      return false;
    }
  }
  setTimeout("Genera()", 500); // puoi abbassare un po' alla volta, se funziona
}
Da richiamare:
<script type="text/javascript>Genera();</script>

che devi inserire al posto del tuo commento nel body.

Il contenuto di ogni box deve essere &amp;nbsp; (cioe` devi togliere lo spazio tra & e nbsp