У меня есть небольшой интернет-магазин, продающий предметы совсем не повседневного использования. То есть, как раз такой, где регистрация непременно нужна, но скорее всего, пользователь воспользуется ей однократно. В таком случае форма регистрации приобретает вид:

Чекбокс «Я не робот» выполняет функцию капчи, но и о его уместности можно поспорить. После нажатия на кнопку, javascript проверяет правильность ввода адреса почты и состояние чекбокса; в случае успеха данные отправляются аяксом на сервер, где вновь проверяются. Если почтовый адрес введен правильно и еще не зарегистрирован, создается новая учетная запись, генерируется пароль, который отправляется на почту пользователя, и новый пользователь авторизуется. Таким образом выигрывают обе стороны — посетитель избавлен от мучений регистрации, а сайт получает более лояльного пользователя.
Но интернет-магазину не достаточно знать только адрес электронной почты покупателя. Для доставки товара потребуется еще и адрес клиента, телефон и, наконец, имя. Эти данные получаются непосредственно в момент заказа:

Ну и конечно же пользователь может сменить свой пароль в профайле, указав пароль, сгенерированный при регистрации (для чего ему нужно будет проверить почту, фактически подтвердить ее), а информацию о доставке второй раз указывать уже не придется.
UPD: Спасибо за комментарии. Чекбокса больше нет)
UPD2: Логическое продолжение: про капчу

