Hola:
Tal vez el value del checbox pueda ser el nombre del campo obligatorio...
<input type="checkbox" value="nick" name="obligatorio" onclick="nombre.disabled = !this.checked"/>
<input name="nombre" type="text" />
Y la validación (onsubmit="return validar(this)")...
function validar(f) {
vale = true;
for (i = 0, oblis = f.obligatorio; i < oblis.length; i ++)
if (oblis[i].checked) vale = vale && f[oblis[i].value].value != "";
return vale;
}
Saludos