1. Request/Response Syncing - Request A fires from the browser and takes 3 seconds on the server. Request B fires from the browser right after A and only takes 1 second to return. Your request/responses are now out of sync. Can you application handle this? Any decent framework will provide either a submission queue or request/response matching to keep your calls in sync.
2. Network Down Situations - Your webserver probably fails more often than you think. If your request fails or there is a server side error in the return will your application choke? A framework will catch these problems and let you handle them gracefully. There is no need to break your application because the server choked on a request.
3. JSON, XML, TEXT support - JSON is the new hotness. I'd say most of the new ajax development going on uses JSON as the default for transmitting data. It's light, fast and far easier to work with than XML in the browser. A good framework will support JSON natively. A good framework will also NOT use just plain old eval(myjsonstring) to deserialize the JSON string.
4. Forms support - Creating a long string of form values is old school. Be part of the new school with a function such as ajaxObj.getForm('formId') as in MyBic. One function gathers up all your form data, encodes it and lets you send it to the server in a neat little package. Quit doing the heavy lifting.
5. Request Abortion - You should be able to set timeouts on requests on an individual level. Should request A take 10 seconds? Should request B take less than 3? A good framework will auto abort these calls that hang and allow you to handle them gracefully.
6. Built in Debugging - For those who can't use firefox's firebug tool or for those creating kiosk apps who may not have tools available an online debugger is a huge help. A good framework will show you the request/responses on the screen so you can debug your apps easier.
7. Uses the RIGHT XMLHttpRequest Object - Are you checking for the proper version of MSXML for IE? Are you aware that IE only recommends you use version 6.0 and 3.0? 4 and 5 are strictly for office updates and may actually introduce bugs? A good framework will know this for you and fetch the proper object.
8. Memory Leaks - If your code is setting your callback function directly with "onreadystatechange = myfunction" you my friend are a memory leak magnet. A real ajax framework will set a timer out of process to test for the response. This will not bind to a dom element creating a circular reference. A decent framework should be tested daily with memory leak monitoring tools.
10. It's someone else's headache! You shouldn't worry yourself with all these things. People are willing to do it for free for you. Why try and re-invent the wheel when you probably haven't thought of everything?
One such framework that supports the 10 above is the MyBic AJAX/PHP framework. 3 files, high quality. http://www.litfuel.net/mybic