You need to set the height to 100% for html, which means the selector rule is html, not html (which refers to an html element as a descendant (child, grand-child, ...) of any other element. In HTML, the root element is html, which in turn contains a head element and a body element. Since there should be only one body element, "html body", "html > body" and "body" should do the same thing.
<style type="text/css">
html, body, div {
height: 100%;
}
div {
background-color: #CCC;
}
</style>
</head>
<body>
<div>
hello
</div>
No special fix included above, but it works in IE8, and most likely IE7 as well. If you really do need to deal with IE6, I'm guessing dropping the * from the selector "* html" would make your special fixes work in IE6 as well.