Also, if you have control of browser type/version, you can do a polyfill using the object passed to onreadystatechange funcion:
var oReq = new XMLHttpRequest();
// This part for modern browsers
oReq.addEventListener("progress", updateProgress, false);
oReq.addEventListener("load", transferComplete, false);
oReq.addEventListener("error", transferFailed, false);
oReq.addEventListener("abort", transferCanceled, false);
// This part for old ones
oReq.onreadystatechange = functionSwitch;
Where functionSwitch will call the right function (will choose between updateProgress, transferComplete, ...) so avoiding double code.
I have seen people using Windows XP yet and probably ANY addEventListener won't work. Have a look: addEventListener Compatibility. I didn't find a specific list of xmlhttprequest events via addEventListener.