Это интересный вопрос о дизайне, и не только технический. Если вы проверяете каждое поле, когда пользователь покидает его, вы, как следствие, будете каким-то образом показывать результат вашей проверки, по крайней мере, если значение поля не является «действительным». С этим нужно обращаться хорошо, иначе это будет раздражать.
Лично я считаю, что проверять при отправке меньше проблем, но для больших форм людям может быть непонятно, когда им нужно вернуться назад и переосмыслить то, с чем они хотели бы покончить. Кроме того, как вы говорите, вы все равно застряли с проверкой во время отправки.