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.