XMLHttpRequest was available since Firefox was called Firefox[1], and it should have been at least partly functional in 2002 when Phoenix 0.1 (the predecessor to Firebird and Firefox) was released. In 2004, Firebird just got renamed to Firefox (on version 0.8) and Safari implemented XHR. Opera and Konqueror would implement it in 2005.
The main issue obstructing the use of XHR was not browser compatibility. Internet Explorer still had 95% market share, and almost nobody cared about compatibility with other browsers then. The issue was mostly about awareness, and lack of proper tooling. The term AJAX was only coined in 2005, so the technique of using XHR to reduce page refreshes and improve page responsiveness didn't even have a name. It was used here in there by savvy web developers, but it wasn't systematic.
Before 2005, very few websites were built entirely on XHR. It was out there, lurking in the shadows, but not transforming the way web was done yet. Outlook Web Access (for which XHR was developed) is an obvious mention, but the first site that got XR popular was probably Gmail Beta, in 2004. I think a lot of developers suddenly wanted to replicate it, and with the popularization of AJAX in 2005, learning resources become easier to find, libraries and frameworks got developed to make its usage easier (anybody said jQuery?) and so on.
[1] See: https://bugzilla.mozilla.org/show_bug.cgi?id=237606. Interestingly enough, this bug report was about trying to access an XPCOM component from a web page, not about an incompatibility with whatever IE was doing. IE didn't even have XPCOM after all!
I used XHR in IE in 1999-2001 in a production web app at a well known investment bank. It was my idea to use it after stumbling across the docs got it on msdn or another developer-only resource. The docs were extremely limited so I just played until I figured it out. It was synchronous only at that time, I asynchronous calls. I wrote the Java server code to return XML I think?
The main issue obstructing the use of XHR was not browser compatibility. Internet Explorer still had 95% market share, and almost nobody cared about compatibility with other browsers then. The issue was mostly about awareness, and lack of proper tooling. The term AJAX was only coined in 2005, so the technique of using XHR to reduce page refreshes and improve page responsiveness didn't even have a name. It was used here in there by savvy web developers, but it wasn't systematic.
Before 2005, very few websites were built entirely on XHR. It was out there, lurking in the shadows, but not transforming the way web was done yet. Outlook Web Access (for which XHR was developed) is an obvious mention, but the first site that got XR popular was probably Gmail Beta, in 2004. I think a lot of developers suddenly wanted to replicate it, and with the popularization of AJAX in 2005, learning resources become easier to find, libraries and frameworks got developed to make its usage easier (anybody said jQuery?) and so on.
[1] See: https://bugzilla.mozilla.org/show_bug.cgi?id=237606. Interestingly enough, this bug report was about trying to access an XPCOM component from a web page, not about an incompatibility with whatever IE was doing. IE didn't even have XPCOM after all!