Design for user profile information and track changes
You can follow a proven design from data warehousing called a Slowly Changing Dimension.

Essentially on each row you add some combination of an ActiveFlag, DateTimeStart and DateTimeEnd. When you get a change you end the old record and write a new one, which will include the changes that triggered the historic change. If you do not care about some fields' history you can simply update in place on the active row.

There will only ever be one active row for any given login and any number of historic versions of the information. If you keep the start date and end dates you can see when changes occurred in addition to simply keeping older records around. You can always move ended rows to a different table, and retain only the most recent record in your system table... I'd make sure that the performance hit and maintenance costs of doing so outweigh simply keeping them in place.