Ciao, la tua funzione validateForm() controlla, per tutti gli elementi input, che la relativa proprietà value non sia vuota. Il problema sta nel fatto che, per gli elementi checkbox, la proprietà value ha il valore "on" come default e tale valore resta tale (se non diversamente impostato) a prescindere dal fatto che il checkbox sia o no spuntato.

Per controllare se un checkbox è spuntato non dovresti controllarne la proprietà value (a meno che questa non venga alterata in qualche altro modo) ma piuttosto dovresti controllarne la proprietà checked, che appunto risulta true se il checkbox è spuntato o false se non lo è.

Potresti quindi aggiungere un ulteriore controllo nella condizione dentro la funzione validateForm(), una cosa del tipo:

codice:
if (y[i].value == "" || (y[i].type == 'checkbox' && !y[i].checked))

Quindi, a parte il value, viene controllata anche la proprietà checked se si tratta di un elemento di tipo checkbox.

Vedi se va. Fai sapere.