Holas, mariogl84
Estoy en las mismas que tú, pero un poquito más avanzada (pues empecé la semana pasada xD).
La forma en que lo estoy haciendo yo (y que no sé si es la mejor) es partiendo de la base de los nombres de los objetos que usas, o sea, preguntas y respuestas.
Por ejemplo, yo le di un input HIDDEN a cada pregunta, en donde el VALUE guarda el ID de la pregunta y el NAME es el mismo para todos, de modo que me genere un arreglo de preguntas. Para las respuestas tengo un input RADIO (en tu caso, habría que agregar CHECKBOX) para cada una, en donde el VALUE guarda el valor, obvio, y el NAME es el mismo para todos. El NAME lo armo juntanto una palabra clave (ejemplo "respuesta_") a la que le concateno el ID de la pregunta. El HTML queda algo así:
Código HTML:
<input type="hidden" name="pregunta" value="1"> 1. Primera pregunta: <br>
<input type="radio" name="respuesta_1" value="A"> Sí <br>
<input type="radio" name="respuesta_1" value="B"> No <br>
<input type="radio" name="respuesta_1" value="C"> Ninguna
Luego recorro con javascript el arreglo "pregunta", y por cada pregunta, como tengo su ID (el VALUE del campo HIDDEN) armo el nombre del arreglo de respuestas, llamándolo con getElementsByName(). Y así voy preguntando si hay a lo menos un checkeado, y si no, aumento un contador. Si al final del ciclo el contador es mayor a uno, pues reclama.
Eso a grandes rasgos. Yo todavía lo estoy validando (de hecho dejé unas dudas en otro tema en este mismo subforo), por lo que puede que encuentres una mejor y más óptima forma de crear tu validador.
Suerte! :D