Non ho controllato attentamente nel codice HTML, ma ritengo che nello script vuoi testare solo i checkbox, non tutti i campi.
Inoltre ho visto che non ci sono tutti i campi con nome coloreX. Probabilmente e` questo che fa arrabbiare il browser.

Per cui il codice deve diventare:
codice:
for (var i=0;i<num_colori;i++) {
  if (f.elements['colore'+i] && f.elements['colore'+i].type=='checkbox' && f.elements['colore'+i].checked) {
    if (cont>1) {
      alert("Attenzione, non puoi selezionare più di un colore!");
      return false;
    } else {
      valore_selezionato = f.elements['colore'+i].value
      cont++;
    }
  }
}