Спасибо за пример -- в самом деле неплохая штука. Я попробовал чуть-чуть очистить код от лишнего. Вот, что получилось ("main" и "contents" я поменял местами -- мне так больше нравится):

Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Footer Demo 1</title>
<link rel="stylesheet" href="FooterDemo.css" />
</head>
<body>
<!-- START -->
<div id="main">
<div id="contents"></div>
<div id="footer"></div>
</div>
<!-- STOP -->
</body>
</html>

Код HTML:
html, body, #main {
min-height: 100%;
width: 100%;
height: 100%;
}
/*
* The "height" above is a hack for IE5+/Win. Below we adjust
* it using the child selector to hide from IE5+/Win
*/
html>body, body #main {
height: auto;
}
/*
* Without this, Moz1.0 adds a vertical scrollbar
*/
body {
margin: 0;
font-family: Arial, sans-serif;
}
#main {
position: absolute;
top: 0;
left: 0;
background-color: #ccccff;
border:0px solid #FF0000;
}
#contents {
margin-bottom: 100px;
height: auto;
padding: 100px;
background-color: #ffcccc;
}
#footer {
position: absolute;
bottom: 0;
background-color: #ccffcc;
text-align: center;
padding: 0;
width: 100%;
height: 100px;
}
Только две маленькие проблемы. 1. Средняя часть не растягивается, так чтобы начинаться там, где заканчивается хэдер, и заканчиваться, где начинается футэр. А в этом как раз и заключается основная проблема. Грубо говоря, БГ средней "полосы" должен быть имено БГ средней (#middle{background-color:#FF9900;}), а не по принципу #middle{} #main{background-color:#FF9900;}. 2. Кроме того -- с бордерами пример не дружит. Даем контейнеру (в оригинале "contents", у меня "main") бодер больше нуля и все сразу становится криво, причем в обоих браузеах.
А в остальном лэйаут очень даже секси. ))