Using position:fixed and still support Internet Explorer.

The following script will add support for position:fixed defined in the first stylesheet in the page (can be extended to others if you wish).

This version is now somewhat old, the version in Snufkin is more advanced than this, with significantly more support.

 function AddHandler(element,strEvent,fnName) {
 ref='a'+new Date().valueOf()
 while (typeof element[ref]!='undefined')
     ref='a'+Number(ref.substr(1,100))+1
 if (element[strEvent]) {
  element[ref]=element[strEvent]
  element[strEvent]=new Function("this['"+ref+"']();"+fnName+"()")
 } else {
  element[strEvent]=new Function(fnName+"()")
 }
}

AddHandler(window,'onload','AddFixedSupport')

 function AddFixedSupport() {
  d=document
  styl=d.styleSheets
  if (styl && styl[0]) {
  rules=styl[0].rules
   if (rules) {
    for (i=0;i<rules.length;i++) {
     ris=rules[i].style
     if (ris.position=='fixed') {
      sel=rules[i].selectorText.split('#')
      if (sel && sel[1] && d.getElementById) { 
       el=d.getElementById(sel[1])
       if (el && el.style && el.style.setExpression) {
        el.style.position='absolute'
        el.style.setExpression('top','document.body.scrollTop+'+parseInt(ris.top))
        el.style.setExpression('left','document.body.scrollLeft+'+parseInt(ris.left))
        d.parentWindow.attachEvent("onscroll",d.recalc)

       }
      }
     }
    }
   }
  }
 }