Pour commencer regardons la hiérarchie de classe de formulaires générée par symfony:
Propel: UserForm < BaseUserForm < BaseFormPropel < sfFormPropel
Doctrine: UserForm < BaseUserForm < BaseFormDoctrine < sfFormDoctrine

Ce sont les classes sfFormDoctrine et sfFormPropel qui vont nous intéresser car elles possèdent une méthode processValues() qui est appelée au moment de la mise à jour de l'objet User correspondant au formulaire. Elle a pour but de nettoyer les valeurs avant la mise à jour de l'objet. C'est donc grâce à cette méthode que nous allons pouvoir faire un traitement sur les valeurs saisis des champs et dans notre cas mettre le password en MD5. En effet pour chacun des champs du formulaire processValues() va appeler, si elle existe, une méthode updateXXXColumn() où XXX est le nom PHP d'un champ du formulaire, afin d'effectuer un traitement particulier sur la valeur de ce champ.

Donc pour convertir le texte saisi dans le champ password en MD5 au moment de la sauvegarde du formulaire, il suffit de définir une méthode updatePasswordColumn() dans la classe UserForm.

public function updatePasswordColumn($value)
{
	if(!empty($value)) { $value = md5($value); }

	return $value;
}

NOTE: la méthode processValues() retourne un tableau contenant les valeurs nettoyées pour chaque champ, si une méthode updateXXXColumn() retourne false alors processValues() va supprimer le champ XXX du tableau qu'elle retourne.