Well, the obvious (and rather useless) answer is that English letters weren't much of a commodity back in seventh-century Arabia, so they tended to use Arabic instead: The only correct way to spell the Prophet's name is محمد.
Phonetically, "Muhammad" is probably the most accurate romanization of the ones you listed, but even then it loses a lot. The Arabic ح (romanized "h") has no actual English equivalent (think Scottish "ch", as in "loch"), and the vowels are, at best, close approximations: It is not uncommon to see "o" used instead of "u", or "e" instead of "a", but the Arabic vowels don't really sound like either.
Using "u" and "a" (and "i", but "Muhammad" doesn't use that one) for the vowels, however, is pretty much standard across formal Arabic romanization methods. The variant spellings are typically based on attempts to spell the name out phonetically rather than out of any adherence to the original Arabic, which becomes further complicated by the name being pronounced differently in different dialects (see Wikipedia: "Muhammad (Name)").