Para manterner el estado del checkbox existe la función :
set_checkbox(campo,value,valuepordefecto) del form_helper, puedes revisar esto mismo en el user_guide, para que te funcione el campo debe estar presente en tus reglas de validación , eso no lo dice el user_guide pero a mi me ha pasado
ej:
y tengo un fichero de validacion donde tengo mis reglas aunque tu lo puedes hacer como quieras pero debes tener una regla, como ves tengo trim, puede ser cualquier otra :
$this->form_validation->set_rules('delivery_type_shipping', 'Shipping Address', 'trim');
Código PHP:
<input type="checkbox" name="delivery_type_shipping" value="1" <?php echo set_checkbox('delivery_type_shipping', '1'); ?>/>
saludos , cualquier problema me dices y te rrespondo