Check for exhaust in the coolant...
I had an overheating problem in my D90 and did everything but pulling the heads, even checked for exhausting in the coolant several times (ie head gasket leak). One day I was stopped at the local LR shop to pickup something and left the engine running. I was getting ready to pull away when the mech came out and told me I was dumping coolant, the temp gauge wasnt showing a high temp. The motor at undetermined times would develop a head leak on from the exhaust and pressurize the raditor blowing all the coolant out, the engine would then overheat because of no coolant. There was no coolant in the exhaust or exhaust in the coolant.
I would proceed in this order: Use a laser thermometer to look for hot/cold spots in radiator (recore/replace if problem found), change T-stat and coolant, check sensor/gauge/electrical, check fan, look for exhaust in coolant and coolant in exhaust and lastly pull heads.
Fan Clutch Replacement is EASY!!!!
On my 94 D90NAS I had the aforementioned problem where the head gasket had a small leak into the cooling system causing bubbling in the coolant then the contents of the system would puke out. Got that fixed. Still nearly overheated in traffic on hot days all the time.
Ended up being the fan clutch which I hear is very common. Ordered a new one and installed it myself WITHOUT the lame and expensive spanner set made just for this pupropse.
I snuck a 12 inch Crecent in behind the fan onto the fan clutch nut. Be careful not to bust the fan, as I hear they are fragile. I then stuck a leather work glove between the belt and the water pump pully and turned the wrench clockwise (the nut is reverse thread) until the glove stuck in there good enough to keep the belt from slipping on the pully. I then gave the crecent a light smack with a small sledge hammer and the nut spun right off. Put the new one on, and it runs cool as a cucumber now.
I did it all in about an hour, and I have almost no mechanical skill (regular maint is about the best I can usually do).
I hear this is a common issue, so even though the part was over a hundred bucks, I saved on the labor. Also, solving the overheat will prevent more head gasket damage and/or a slipped cylinder sleeve in the future. Overheating at idle=Fan Clutch very likely.