No entiendo muy bien tu codigo.... pero lo que te puedo dar es la solucion explicada.... y espero puedas desarrollarla....
Al hacer submit, debes recorrer el nombre arreglo de los checkbox con un foreach (antes preguntando si la cantidad es mayor a 0) y una vez en el bucle, preguntas si el valor es diferente de vacio, quiere decir que lo checkearon y entonces debes de nuevo checkearlo.
OMG.... ni yo me entiendo muy bien xD
Espero te haya servido de algo, sino comentame y haber si te ayudo con algun codigo de ejemplo.
Suerte