When the iPhone came out, it was great to hear that it had a good IMAP client built in. At the same time, there was talk of the iPhone supporting "push" email, and there was an expectation that the push would be done via the IMAP IDLE extension. With some help from users, we unfortunately discovered that wasn't true, and that the push only worked with Yahoo initially, and it was done with some background mechanism not available to users or other providers. For all other IMAP providers, the iPhone only did polling of the IMAP account every 15 minutes.
With the iPhone 2.0 software, there was support for push from Exchange based servers. Unfortunately there was still no IMAP push support.
With the iPhone 3.0 software, there's now a general push notifications framework built into the phone. Unfortunately, it appears that framework is only designed around user applications, there's no way to push notifications to any of the built in applications (eg there's no way for us to tell the Mail application on a particular phone that there's new messages).
So the situation today for IMAP users appears to be the same as when the iPhone first came out. You can only use regular polling to check for new email, while Yahoo/Exchange/MobileMe use some "behind the scenes" magic others don't get access to to do push notifications.
Fortunately there may now be another solution. msgpush.com is a beta service that connects to an existing IMAP account, and uses IMAP IDLE to get push notifications of IMAP updates, and then uses the Exchange protocol to push those updates to your iPhone. The net result is a complete IMAP push solution for the iPhone.
We're interested in hearing about user experiences of the service in our forum.