Explicit labels are the easiest way to ensure that most user agents can associate form prompts with the correct control.
<label for="breed">Dog's Breed</label>
<input type="text" size="30" id="breed" />
Although implicit labels are "legal" according to the spec, they do not work correctly in IE6 and lower, or in JAWS 6.2 and other screen readers.
<label>Dog's Breed <input type="text" size="30" id="breed">
</label>
This works, but semantically it's still a bit of a cheat because the input is not part of the prompt.
<label for="breed">Dog's Breed
<input type="text" size="30" id="breed" /></label>