To add to your point #1, I had a completely blind user call me for assistance because he couldn't log in. His terminal reads the HTML to him, and he uses arrow key to move his cursor between fields. He dutifully entered his full name in the first box and obviously couldn't get anywhere.
I've since labelled the boxes on the registration page 'First Name' (then the box) then 'Last Name' (then the box).
Meeting such a user also emphasizes the need to put the labels before the box rather than following it.