To make it working well you need to:
1) In your Form class, before $form->setValues($data); add the following:
if (!is_array($data['expertise'])) {
$data['expertise'] = explode(',', $data['expertise']);
}
2) In your Controller class, before $model->setData($data); add the following:
if (is_array($data['expertise'])) {
$data['expertise'] = implode(',', $data['expertise']);
}
Moreover, input component of "checkbox" type is not standard in Magento and it works incorrectly in some cases. The best solution here is to use "multiselect" component:
$fieldset->addField(
'expertise', 'multiselect', array(
'name' => 'expertise',
'label' => Mage::helper('checkout')->__('Expertise Area'),
'required' => true,
'values' => array(
array(
'label' => 'Php',
'value' => 'php'
),
array(
'label' => '.Net',
'value' => 'dotnet'
),
)
));