Как сгенерировать список свободных логинов, предлагаемых пользователю при регистрации?
собственно в чем вопрос? 
Данные которые должны учитываться - фамилия, имя, дата рождения и введенный пользователем логин (он считается уже занятым) 
на стороне php - генерируете массив возможных вариантов на основе этих данных, потом проверяете что из этого массива есть в базе с помощью запроса в стилеSELECT * FROM users WHERE login IN ('login1', 'login2', 'login3')
Точного алгоритма, скорее всего, нет;  добавляй к логину, например, г.р. и предлагай пользователю (можно, добавить дефис, туда еще ).