Beauchamp. ..Beacham (phonetically spelled)?
Solution 1:
As with similar cases like Beaulieu, Belvoir, Cholmondley, Fetherstonhaugh, Leicester -- (Bewley, Beaver, Chumley, Fanshaw, Lester) -- it's because English spelling changes much more slowly than English pronunciation. Old families had their name written down a long while ago and there's great risistance to spelling reform in English. Despite this, the spoken language changes as all languages do, as vowels move, consonants are elided, and so on. The result is that the two drift apart.
But also remember that many of these words come from languages (such as Norman French) which even at the point of divergence way back in history weren't pronounced in the same way as their modern equivalents (eg Modern French). Beauchamp, as an English family name, was probably never pronounced as it is in modern French. In the eleventh century it would have been pronounced in a way which would sound odd to both English and French ears and then each language went its own way and the spelling? Well, the spelling stood still.