If a label wraps around an input, VoiceOver does not see the form field in Firefox, only the label. In Safari, this works fine. So: <label for="username">User name:</label><input id="username" /> works, but <label for="username">User name:<input id="username" /></label> does not. Same is true for input @type="checkbox". A real-life example of this (legal) HTML construct can be seen on the WordPress admin login on each standard WordPress installation.
This is about missing out on actual interactive content elements. Not even tabbing to them yields any speech, because accessible objects don't seem to be created for these form fields that are wrapped in labels.
With this patch the form is accessible, but the text spoken is a bit too repetitive. There is probably more tweaking needed I'll add to a revised patch.
Comment on attachment 614204 [details] [diff] [review] Labels are groups, not text. r= Let's put that one in. The other problem is separate.