discuss.answer
The usual way to do that is to have users register through a form that requires that information, store the information, then hide the download links or the download pages from people who are not logged in. The user's won't have to give the information again, but they will have to log in unless you have "remember me" built into the login form.
You can use the Register snippet (part of the Login package) to register people. There is also the Subscribe extra, which wraps the Register snippet and optionally lets you store user preferences/interests and let users choose user groups to belong join.