Sto lavorando anche io ad un editor XHTML. L'uso della textarea è obbligatorio, in quanto non puoi spedire il contenuto di un iframe come campo di un form. Il "trucco" è di usare JS per "leggere" il codice dall'iframe quando premi il pulsante submit e di trasferirlo nella textarea (che sarà nascosta tramite una regola CSS) appena prima dell'invio del form.
Tra l'altro, ero riuscito a farlo anche accessibile (se JS era disabilitato, veniva mostrata la textarea che permetteva di digitare direttamente il codice), se non fosse che IE non vuole saperne di caricarmi il codice letto dalla textarea nell'iframe prima di attivare il designMode!!! E se lo faccio dopo, mi dice che body è nullo o non è un oggetto!