There are multiple things that you are missing or i think you are doing wrong here, i am saying this as i have no info on what your previous problem was.
1) you are creating a new object $incident = new Incident(); in EDIT where as you need to do something like this, new object will always create empty object with no values
if (!$this->params('id')) {
$incident = new Incident(); // means you are coming from add action(which i think is not a good approach the way you are handling it)
}else{
$incident = $this->getEntityManager()->getRepository('Helpdesk\Entity\Incident')->find($this->params('id'));}
You will only need
2) I don’t know why you are passing
$form = new IncidentForm($this->getEntityManager());
Entity manager object to form? if you have specific reason please update your question else i don’t think it is required here. Coz seemingly you are making things tough for your self.
3) Try removing following line
$form->setHydrator(new DoctrineObject($this->getEntityManager(),'Helpdesk\Entity\Incident'));
4) try replacing this line only if add and edit Template are not identical
$viewModel->setTemplate('helpdesk/incident/add.phtml');// with
$viewModel->setTemplate('helpdesk/incident/edit.phtml');// if you dont have edit.phtml create it too
why as i assume your add action would have set its Form action and you will always render a Request similar to ADD.
5) This is my personal opinion that doing some thing like this is bad you need to create proper clean code for every action, for simpler scenarios you may find a work around for little bit tough forms you will stuck and you will have to rewrite whole code
/**
* Add action
*
*/
public function addAction()
{
return $this->editAction();
}