Cette graphie est due à la nasalisation, puis dénasalisation de la voyelle placée devant la consonne nasale [m]. Ce phénomène a touché toutes les voyelles placées devant des consonnes nasales.
L'explication la plus simple que j'ai trouvée est ici :
Les consonnes nasales doubles nn et mm sont des graphies historiques
; elles correspondent à une prononciation : voyelle nasalisée +
consonne nasale (une année [ãne], un homme [õm], une femme [fãm], la
grammaire [gRãmeR]). La voyelle, nasalisée au XI, s'est ensuite
dénasalisée, aux XVe - XVIIe siècles, le plus
tardivement pour le on [õ]. On a donc d'abord écrit an pour [ã] + 2ème
consonne n.
Pour une explication plus scientifique on peut regarder Introduction à la phonétique historique du français. (Annick Englebert) que j'essaie de résumer ici :
La nasalisation est un phénomène qui s'est produit du Xe siècle. Il a affecté les voyelles et les diphtongues suivies des nasales [m] [n] ou [ɲ].
Processus :
La présence d'une consonne nasale a sur la voyelle qui précède trois effets successifs.
Au VIIe siècle les voyelles simples entravées par une consonne finale nasale se ferment, ainsi
[ɛn] >[en], [ɔn]>[on].
Entre le Xe et le XIVe siècles, la voyelle qui précède la consonne nasale se nasalise (anticipation de l'abaissement du voile du palais).
Les premiers phénomènes touchés par les nasalisations sont les voyelles et diphtongues plus ouvertes, à savoir les voyelles [a] et [e] et les diphtongues correspondantes. Les voyelles fermées suivront.
À l'achèvement de la phase de nasalisation, toutes les voyelles sont nasalisées devant les consonnes nasales qui subsistent ; la séquence voyelle nasale+consonne nasale est donc systématique (ce dont des graphies tendent à rendre compte en doublant la nasale (nn/mm) : feme/femme.
À l'issue de la phase de nasalisation des voyelles, un des deux phénomènes d'articulation nasale va être éliminé :
- la consonne si elle est en position faible
- la voyelle si elle est en position forte (syllabe ouverte ou initiale). On est dans ce cas pour femme : fémĩnam >femme
En ancien français les copistes notaient la nasalisation soit en usant d'un tilde (~) sur la voyelle, soit en doublant la consonne intervocalique ; le doublement de la consonne a été conservé dans certaines graphies modernes.