I have found IM to be effective for a distributed team, but I would add that you should also be allowed, and even encouraged, to turn it off for large swaths of the day. I suggest having "IM hours" at set points during the day where you're expected to be online, but outside of that it's your choice.
Honestly I found it very distracting to have it on all the time (and we were encouraged to have it on all the time, for a while).
Also, when it's off, the next resort should be email, not picking up the phone. This is very difficult for managers to understand, but developers need large blocks of undisturbed time. Managers go on and on about how a phone call saves so much email. That's because they get a lot of email and they want to cut it down. Plus, they're not concentrating on anything, so they see no cost to a phone call, but when they call a developer, it costs money.
Again, there can be set times of day when you're available for disruption. 20 minutes before lunch, or right after lunch, are good times.