There are a few small enhancement - most significant for me is the ability to switch auto-correct/complete languages for the on-screen keyboard on the fly, since I write emails and SMS in multiple languages on any given day. There is now also finally a switch to disable the use of cellular data independent of any other function, which had been one of my complaints for a long time.
New on the platform side are a few services like the ability to back up application data in the cloud, make use of the SD-card for installing a lot more apps than what the capacity of the internal flash memory can handle or the C2DM notification service discussed here earlier. Any of these require applications written with the new SDK and using these new features to show their full potential.
But I am most excited about the official support for tethering in Android 2.2 - i.e. the ability to use the phone's cellular connection as an uplink for other devices either through USB or wifi. While USB would clearly be better from a battery life perspective, the number of devices which support networking over USB via the phone is a lot more limited than the number of devices which support wifi: today pretty much any internet capable device seems to support wifi. When turning on the mobile wifi hot-spot feature, the phone is basically acting like a wifi base-station, creating a wifi subnet which other devices can join and access the Internet by sharing the phone's cellular data connection.
A quick test with speedtest.net from my tethered laptop vs. the speedtest Android app running on the phone shows no noticeable throughput degradation by tethering (about 2.7Mbps upstream and 1.5Mbps downstream on Orange CH 3G service from our house in Zürich around midnight).