Caro amigo, fiz algo semelhante no último projeto na empresa onde trabalho.
Na verdade não era bem um “browser”. Se trata de uma aplicação que “montava” as telas de cadastro, os campos, os dados, tudo ddinamicamente, usando um XML que vinha do servidor.
A aplicação analisava o XML, e ia montando a tela, de acordo com os campos e os dados informados no XML.
Acontece que eu sempre uso Canvas puro, e desenho em canvas todos os controles, entrada de texto, listas, grids, tabelas, combobox, checklistbox, e tudo o mais que uma aplicação precise.
Quanto ao seu browser, logicamente você deverá usar Canvas, e logicamente deverá criar na mão classes que representarão os controles de form.
Quanto so desenho em tela, você analisará cada TAG do HTML e pintará a aplicação de acordo.
Aconselho primeiro fazer um navegador que ignore todas as TAGs, e mostre apenas o texto do body sem qualquer formatação. Numa segunda fazer você faria a implementação da interpretação dos links. Numa terceira fazer você faria a formatação do texto usando as próprias tags HTML, como font, color, etc. Depois faria a interpretação do CSS. Depois forms e controles, depois javascript. E assim iria melhorando seu navegador.
Espero ter ajudado com alguma idéia.
Abraço.