<div id="wrap"> <div id="main" class="clearfix">
</div></div>
<div id="footer">
</div>
html, body, #wrap {height: 100%;}
body > #wrap {height: auto; min-height: 100%;}
#main {padding-bottom: 150px;} /* отступ должен быть равен высоте футера */
#footer {position: relative;
margin-top: -150px; /* отрицательное значение высоты футера */
height: 150px;
clear:both;}
минус такого прибивания в том что сложнее биндиться к событию scroll
и этот вариант не подойдет если футер меняет высоту(например при адаптивности), в этом случае надо гуглить dynamic sticky footer
там будет еще небольшой скрипт постоянно пересчитывающий высоту футера