Looks like you should use error_class method of the form, like in example here. Also you should delete 'email_conf' element from cleaned_data dict. It's also very important to make sure all the keys do present in cleaned data (that these keys validated on previous steps of validation).
def clean(self):
cleaned_data = super(SignUpForm, self).clean()
email = cleaned_data.get('email')
email_conf = cleaned_data.get('email_conf')
if email and email_conf and email != email_conf:
self._errors['email_conf'] = self.error_class(['Emails do not match.'])
del self.cleaned_data['email_conf']
return cleaned_data