This is the question I am frequently asked. How to add custom attributes in Magento registration & accounts pages?
Sometimes Magento store owners want to add extra fields to registration page to collect extra information to better understand their customer's needs. For example, they may need their birth date, email address, their website address, image or files. There are many extensions available that allow you to add Magento custom registration fields. The one I recommend is from FME extension who are the industry leaders in Magento. Magento customer attributes extension by FME empowers you to add 11 different field types and validate their input. You can make some of the fields optional and mandatory and sort their positions.
For full features, see: Magento Add Customer Attribute by FME