beh, c'è l'evento onscroll che fa al caso tuo:

questa funzione controlla se la pagina ha scrollato in verticale:

codice:
var precedentVerticalScroll;
window.onload = function(){
	precedentVerticalScroll = getScrollXY()[1];
	
}
window.onscroll = function(e){
	var evt = window.event || e;
	var elem = evt.target || evt.srcElement;
	if(typeof elem.body != undefined)
	{
		var logger = document.getElementById("Logger");
		var newScroll = getScrollXY()[1];
		logger.innerHTML = "Precendet: "+precedentVerticalScroll+" Now: "+newScroll;
		if(newScroll != precedentVerticalScroll){
			//È stato modificato lo scroll verticale
			precedentVerticalScroll = newScroll;
		}
	}
}

//Questa l'ho presa da http://www.howtocreate.co.uk/tutoria.../browserwindow
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}