Usability: Form field labels

I've always struggled with the usability trade-offs of left, right and top aligning form labels. Left-alignment places the label too far away from the field causing the user to lost track of which line they are on. Right-alignment places the label right next to the field, but causes a ragging effect from line to line. Top-alignment is a good option, but it increases the height of the form. There is no one or right way because it depends upon the number and type of questions being asked. There is another option that I haven't mentioned which is to place the label within the field. From my experience, this option is seriously flawed because once the user clicks into the field the label disappears. If you become distracted or need to refer to some other piece of information, you often forget what you were trying to enter in the first place.

A prime example is the sign-up form for the iPhone 4 per-order. Because of the incredible volume both the AT&T and Apple sites, I fill this form out at least 7 times before giving up. Maybe I just dumb, but each time I keep forgetting what I was filling out and have to backspace to display the label again.