El problema del sticky footer es famoso y apmplio. La idea es lograr que el footer de una página web se ubique al fondo de la ventana del navegador si el contenido no es el suficiente para llenar la ventana, pero que se ubique justo debajo el contenido, en caso de que este supere el tamaño de la ventana.

La verdad es esta: Nunca encontré una solucion que funcionara en serio. El problema principal es que los estandares HTML actuales no nos dejan usar tablas para organizar una página (lo que me parece perfecto). Y no nos quedan muchas herramientas para lograr nuestro objetivo. Todo lo que es organizacion vertical de los elementos dentro de un HTML normalmente es un dolor de cabeza.

Después de recorrer muchos foros y blogs, y hacer muchos experimentos llegué a la conclusión de que la única solución es usar javascript.

La idea básica es crear dentro del body tres divs, id Header, Content y Footer. Header y Footer van a tener un alto fijo definido en sus estilos.

Y al final de la página vamos a ejecutar un pequeño javascript que setee el minheight del div Content en base al tamaño de la ventana y ademas vamos ejecutar este script cada vez que la ventana cambie de tamaño.

Este sería el código javascript a usar:

var headerDiv = document.getElementById("Header");
var contentDiv = document.getElementById("Content");
var footerDiv = document.getElementById("Footer");
Resize();
window.onresize = function () { Resize() }
function Resize() {
    var windowHeight = 0;
    if (typeof (window.innerHeight) == 'number')
        windowHeight = window.innerHeight;
    else if (document.documentElement && document.documentElement.clientHeight)
        windowHeight = document.documentElement.clientHeight;
    else if (document.body && document.body.clientHeight)
        windowHeight = document.body.clientHeight;
    var contentHeight = windowHeight - headerDiv.clientHeight - footerDiv.clientHeight - 30;
    contentDiv.style.minHeight = contentHeight + "px";
}

La función resize usa varios métodos distintos para averiguar el alto de la ventana. Esto es porque los distintos navegadores reportan de distintas maneras la altura de la misma.

Fijense tambien que en la anteultima linea a la altura de la ventana le estoy restando la altura del header, luego la del footer y luego un numero constante. Este numero puede variar, en base a los margenes de los divs y otras cosas por el estilo. Les dejo a ustedes la tarea de encontrar el numero adecuado para sus paginas. Mientras tanto pueden ver un ejemplo funcional y su código en este link.

Un saludo y espero que les sirva.