Mi rispondo da solo! Ho avuto modo di spulciare il web e, basandomi su di una guida, mi sono creato il mio script. A me funziona (testato con chrome, fireforx e IE9, nel fine settimana testerò il risultato su opera, safari e ie 7/8).

Ecco il codice utilizzato:
codice:
addLoadListener(equalHeight);
function equalHeight() { 
/*Memorizzo riferimento agli id delle posizioni*/
var LeftColumnId = "left";
var MainContentId = "main-content";
var RightColumnId = "right";
var LeftColumn = document.getElementById(LeftColumnId);
var MainContent = document.getElementById(MainContentId);
var RightColumn = document.getElementById(RightColumnId);
/*Calcolo l'altezza dei tre elementi*/
var LeftHeight = LeftColumn.offsetHeight; 
var MainContentHeight = MainContent.offsetHeight; 
var RightHeight = RightColumn.offsetHeight; 
/*Calcolo bordi e padding dei tre elementi (string px)*/ 
var LeftBorderTopPixels = retrieveComputedStyle(LeftColumn, "borderTopWidth"); 
var LeftBorderBottomPixels = retrieveComputedStyle(LeftColumn, "borderBottomWidth"); 
var LeftPaddingTopPixels = retrieveComputedStyle(LeftColumn, "paddingTop"); 
var LeftPaddingBottomPixels = retrieveComputedStyle(LeftColumn, "paddingBottom"); 
var MainContentBorderTopPixels = retrieveComputedStyle(MainContent, "borderTopWidth");
var MainContentBorderBottomPixels = retrieveComputedStyle(MainContent, "borderBottomWidth"); 
var MainContentPaddingTopPixels = retrieveComputedStyle(MainContent, "paddingTop"); 
var MainContentPaddingBottomPixels = retrieveComputedStyle(MainContent, "paddingBottom"); 
var RightBorderTopPixels = retrieveComputedStyle(RightColumn, "borderTopWidth"); 
var RightBorderBottomPixels = retrieveComputedStyle(RightColumn, "borderBottomWidth"); 
var RightPaddingTopPixels = retrieveComputedStyle(RightColumn, "paddingTop"); 
var RightPaddingBottomPixels = retrieveComputedStyle(RightColumn, "paddingBottom"); 
/*Memorizzo il numero dei pixel dei bordi e del padding dei tre elementi*/ 
var LeftBorderNumber = Number(LeftBorderTopPixels.replace("px", "")) + Number(LeftBorderBottomPixels.replace("px", "")); 
var LeftPaddingNumber = Number(LeftPaddingTopPixels.replace("px", "")) + Number(LeftPaddingBottomPixels.replace("px", "")); 
var LeftExtras = LeftBorderNumber + LeftPaddingNumber; 
var MainContentBorderNumber = Number(MainContentBorderTopPixels.replace("px", "")) + Number(MainContentBorderBottomPixels.replace("px", "")); 
var MainContentPaddingNumber = Number(MainContentPaddingTopPixels.replace("px", "")) + Number(MainContentPaddingBottomPixels.replace("px", "")); 
var MainContentExtras = MainContentBorderNumber + MainContentPaddingNumber; 
var RightBorderNumber = Number(RightBorderTopPixels.replace("px", "")) + Number(RightBorderBottomPixels.replace("px", "")); 
var RightPaddingNumber = Number(RightPaddingTopPixels.replace("px", "")) + Number(RightPaddingBottomPixels.replace("px", "")); 
var RightExtras = RightBorderNumber + RightPaddingNumber; 
/*Calcolo l'altezza maggiore dei tre elementi: */ 
if (LeftHeight > MainContentHeight){ 
//Left è più alta di MainContent 
//Left è più alta anche di Right? 
if(LeftHeight > RightHeight){ 
//Left è la più alta 
MainContent.style.height = (LeftHeight - MainContentExtras) + "px"; 
//Imposto altezza MainContent 
RightColumn.style.height = (LeftHeight - RightExtras) + "px"; 
//Imposto altezza Right 
} else{ 
//Right è la più alta 
LeftColumn.style.height = (RightHeight - LeftExtras) + "px"; 
//Imposto altezza Left 
MainContent.style.height = (RightHeight - MainContentExtras) + "px"; 
//Imposto altezza MainContent 
} 
} 
else{ 
//MainContent è più alta di Left 
//MainContent è più alta alta anche di Right? 
if(MainContentHeight > RightHeight){ 
//MainContent è la più alta 
LeftColumn.style.height = (MainContentHeight - LeftExtras) + "px";
//Imposto altezza Left 
RightColumn.style.height = (MainContentHeight - RightExtras) + "px"; 
//Imposto altezza Right 
} else{ 
//Right è la più alta 
LeftColumn.style.height = (RightHeight - LeftExtras) + "px";
//Imposto altezza Left 
MainContent.style.height = (RightHeight - MainContentExtras) + "px"; 
//Imposto altezza MainContent 
} 
} 
} 
function retrieveComputedStyle(element, styleProperty){ 
var computedStyle = null; 
if (typeof element.currentStyle != "undefined"){ 
computedStyle = element.currentStyle; 
} else{ 
computedStyle = document.defaultView.getComputedStyle(element, null); 
} 
return computedStyle[styleProperty]; 
} 

function addLoadListener(fn){ 
if (typeof window.addEventListener != 'undefined'){ 
window.addEventListener('load', fn, false); 
} else if (typeof document.addEventListener != 'undefined'){
document.addEventListener('load', fn, false); 
} else if (typeof window.attachEvent != 'undefined'){ 
window.attachEvent('onload', fn);
 } else{ 
var oldfn = window.onload; 
if (typeof window.onload != 'function'){ 
window.onload = fn;
 } else{ 
window.onload = function(){ 
oldfn();
 fn();
 };
 }
 }
 }