Seems like a doable task if you parse tags manually from a javascript. This is how Facebook FBML namespace tags are implemented for example.
Lets say we have this html with custom tag custom:header that should turn into h1:
<html xmlns:custom>
<body>
    <custom:header text="header text"></custom:header>
</body>
</html>
In a content script we can do:
$el = $("custom\\:header");
$el.html($("<h1>").text($el.attr("text")));
(I am using jQuery here). This will turn our tag into:
<custom:header text="header text">
    <h1>header text</h1>
</custom:header>
You can also inject a css file for your custom tags:
custom\:header {
    color:red;
}