Registration forms are the gatekeepers of your web site - they can allow or deny users access to your most interesting content. Good registration forms can allow the highest volume of most qualified users, but poor ones can either allow in riff-raff or deny good prospects (or both).
Linda Bustos at Get Elastic wrote an excellent post: Registration Usability - 87 Registration Forms Tested. I can’t beat the quality of her analysis, but I do want to discuss one aspect of registration form design: Garbage in, garbage out.
There are two basic problems you must address when designing a form: problems of type and problems of quality.
Problems of type
These problems occur when data is entered into the wrong field; for example, an address is entered into a business name field. These problems can be easily addressed through affordances, constraints and visual grouping.
Visual grouping
Problems of type can be reduced through visual grouping; putting similar fields together and making visual breaks between these fields.

Affordances and Constraints
When a piece of information like a phone number or a credit card number has a specific format, constrain the entry fields to the format of the data. The “size” attribute in HTML can also limit the number of characters entered in a field, like 3 digits for a phone number area code.

If a user can enter data in any format, they will. A country can be “U.S.A.”, “USA”, “US”, “America” and so on. If the data must be consistent, offer a selection of choices, but don’t allow users to format the selection. Drop-down menus and combination boxes are good for this.

Update: SEOmoz.org points out a form with last name first, followed by first name. WTF? Keep the fields in common order. Country then state then city then address? Um, no.
Problems of Quality
Inaccurate data entry, typos and spelling mistakes can have severe consequences on the quality of the data, including having email addresses that don’t work due to a typo. The majority of quality problems come from slips - accidental and unconscious mistakes in data entry.
There are several ways to catch slips and other problems. Allowing a user to preview their entry before submission and showing a confirmation afterwards are two ways; validation (JavaScript, etc.) is another way - this is a good way to catch problems of type.
The data you collect is only as good as the data a user enters.
Update: SEOmoz.org highlights a form with absolutely abysmal data collection here. Sigh.