Old English cuman "come, approach, land; come to oneself, recover; arrive; assemble" (class IV strong verb; past tense cuom, com, past participle cumen), from Proto-Germanic *kwem- (cf. Old Saxon cuman, Old Frisian kuma, Middle Dutch comen, Dutch komen, Old High German queman, German kommen, Old Norse koma, Gothic qiman), from PIE root *gwa-, *gwem- "to go, come" (cf. Sanskrit gamati "he goes," Avestan jamaiti "goes," Tocharian kakmu "come," Lithuanian gemu "to be born," Greek bainein "to go, walk, step," Latin venire "to come").
The substitution of Middle English -o- for Old English -u- before -m-, -n-, or -r- was a scribal habit before minims to avoid misreading the letters in the old style handwriting, which jammed letters. The practice similarly transformed some, monk, tongue, worm. Modern past tense form came is Middle English, probably from Old Norse kvam, replacing Old English cuom.
Remarkably productive with prepositions (NTC's "Dictionary of Phrasal Verbs" lists 198 combinations); consider the varied senses in come to "regain consciousness," come over "possess" (as an emotion), come at "attack," come on (interj.) "be serious," and come off "occur." For sexual senses, see cum.