1. Уникальность лучше ставить на уровне БД. Переопределить юзера, в Meta-классе дописать
unique_together = [['email']]
2. Если первый пункт по каким-то причинам отметается, метод unique_email замени на clean_email и FormView будет сам вызывать его. К тому же, эксепшены из unique_email ты никак не отлавливаешь, вот он и вываливает ошибку.
3. if User.objects.filter(email=email).count() > 0 and email: - это неэффективно. В первую очередь, нужно проверять на то, что email не пуст, а потом уже на то, что он присутствует в БД (меньше запросов). К тому же, count вызывать для этого затратно. Лучше сделать так:
if email and User.objects.filter(email=email).exists():