Hola, hice un ejemplo algo rápido usando JQuery. Sólo lo probé en Opera.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- aqui se van a colocar las preguntas -->
<input type="button" id="btnAgregar" value="Agregar una pregunta"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> var iPregunta=0;
$(document).ready(function(){
$('#btnAgregar').click(function(){
//le pedimos la cantidad de respuestas al usuario
var iCantidad_Respuestas=prompt('Por favor, digite la cantidad de respuestas:',3)
if(iCantidad_Respuestas!=null && iCantidad_Respuestas>0){
iPregunta++; //aumentamos el numero de pregunta (para los IDs)
var strPregunta; //aqui se almacena la plantilla de la pregunta
strPregunta='
<form id="frmPregunta_'+iPregunta+'">'+
'
<input type="text" id="txtPregunta_'+iPregunta+'" size="100">'+
//aqui se agregan los radios/text para las respuestas
for(var iCont=1;iCont<=iCantidad_Respuestas;iCont++){
strPregunta+='<input type="radio" id="radRespuesta_'+iPregunta+
'" name="radRespuesta'+iPregunta+'" checked><input type="text" '+
'id="txtRespuesta_'+iPregunta+'"><br>';
}
//agregamos la nueva pregunta (con todo y respuestas) a la capa divPreguntas
$('#divPreguntas').append(strPregunta);
}else{
//no pasa nada
}
});
});
Explicación rápida (jejejeje):
1. En el documento hay una capa llamada divPreguntas, en ella es donde se van a agregar todas las preguntas que el usuario genere.
2. Por medio del botón btnAgregar se agregan las preguntas a dicha capa.
3. El código javascript genera las preguntas, con la cantidad de respuestas que el usuario indique (para eso el prompt).
En realidad es simple, se almacena en una variable una especie de "template" del form que va a contener las respuestas, con sus campos y todo. Para agregar las respuestas nada más se recorre de 1 a X (cantidad de respuestas indicada por el usuario) y se concatena a la variable que contiene el "template".
Al final se agrega el contenido de la variable strPregunta (código HTML) a la capa divPreguntas.
OJO: la variable iPregunta definida al principio, se utiliza para llevar el conteo de cuántas preguntas existen en el documento. De esta forma se le asignan IDs distintos a los elementos creados. Ahora lo único que le faltaría es recorrer los forms con sus respectivos campos.
Espero le sirva. Saludos desde Costa rica
Edito: lo hice con radios porque se supone que sólo una respuesta es la correcta. El checkbox en este caso no sería de mucha utilidad, ya que se podrían marcar varias o todas las respuestas como correctas.