Well, I see two possibilities:
#1. IE is stupid (well, that's the cause of this anyway

), and when it sees the <?xml?> processing instruction in a .html document, it throws itself into quirks mode.

This may somehow affect how properties are done on dynamically created elements, though I couldn't say for sure.
#2. Have you tried setting checked = true when the node is live in the page? i.e. after you have appended the form and checkbox to the body, try setting the checkbox checked property. I don't see any reason why that shouldn't work in IE, though it would be slightly inefficient to modify a "live" object.