Пишу систему авторизации. Несколько вопросов
1. Только в том случае, если вам необходим этот адрес для его дальнейшего использования, потому как валидация в интернет-магазинах у нас, как правило, происходит по телефонному звонку — что позволяет удостовериться в наличии пользователя и заказа (почти 100%). По сути, адрес можно подтвердить и уже после работы с интернет-магазином и за это в ответ дать сладких плюшек каких-нибудь, а потом присылать рассылки с новыми поступления по направлениям которые ему интересны.

2. Есть смысл чекбокса по дефолту включенного, но если человек не захочет — он просто снимет галочку. Многие не продвинутые пользователи сейчас об этом не задумываются, приняв по дефолту то, что сайт их запоминает. А ещё рекомендую пробежаться по популярным сервисам типа однокласснки, вконтакт и т.п. и посмотеть как у них и не отсупать от этого — схожесть в визуальном плане и поведении стандартных наборов элементов управления является одним из озносных параметров дружественного интерфейса.

3. Рекомендовал бы привязаться не только к имени пользователя (или вобще НЕ к нему), а к данным браузера — имя пользователя то у сессии всегда одно и то же, а вот если к данным браузера привязаться, то утащив куки с сессией злодею надо будет подтасовывать и все идентификационные данные браузера.

4. По идее сессия и нужна для того, чтобы не лазить каждый раз за проверкой. Сейчас у вас бессмыслица — зачем проверять тот ли логин с паролем в базе из сессии, если в сессию вы сами их и положили? Каким образом они могут отличаться? Пользователю недоступно изменение данных сессии, это делает ваш скрипт.
всё что ниже — субъективно
1. для интернет магазина это лишнее. самое то использовать три варианта: заказ без регистрации, регистрация через openid, обычная регистрация.

2. имеет, это очень удобно. только title на чекбокс сделайте с коротким объеснением зачем это.

3. соль нужна для того что бы «усугубить» хеш, а самое главное для того что бы в базе был один хеш (а рядом соль) а в сессию писать уже с солью.

4. я обычно «гостю» ставлю в куку id=1 и пароль md5(rand()), а на страницах уже проверяю, если значение id больше 1 то делаю идентификацию, если 1 то нет.

не забывайте про mysql_escape()