Hola Dkdente.
Me suena que este problema ya lo tuvo otro miembro del foro, pero no recuerdo si lo solucionó ni como. Como idea, se me ocurre que si los checkbox están dentro de un formulario
<form id="frm">
Puedes hacer algunos cambios en tu función a ver si te sirve:
function valida()
{
i=0;
cont=0;
vfinal = document.getElemengById('frm').elements;
for (i=0; i<vfinal.length ;i++)
{
if (vfinal[i].type=='checkbox")
if (vfinal[i].checked)
cont = cont + 1;
}
Te he contestado de memoria, así que espero no haber metido mucho la pata. Saludos,