Hola:
Lo que con javascript se podría hacer, es anular el envío con una validación, que evidentemente no funcionaría si el visitante desactiva javascript o inyecta el submit en la url, así que también tendrías que complementar la acción con una validación en el servidor...
si el checkbox tiene id="check1", y el campo asociado es campo1, el esquema sería:
<form onsubmit="return chequea(this)" ...
y chequea serái...
function chequea(f) {
errores = [];
if (document.getElementById("check1").checked && f.campo1.value == "")
errores.push("debe rellanar el campo 1");
//... resto de validaciones, añadiendo mensajes de errores...
if (errores.length > 0) alert("errores:\n" + errores.join("\n"));
return (errores.length == 0);
}
Saludos