You can make a distributed team work. But you have to work at it.
I see three keys to successful distributed teams:
Trust
Excellent communication: both real-time and asynchronous
Transparency
Trust: You have to trust your colleagues with a great deal of responsibility and autonomy. There's no tool or service to make this happen. You have to have faith in your colleagues.
Communication: Decide on a real-time chat client that offers searchable archives, an open API (to extend functionality), filesharing, and a mobile app. I recommend HipChat or Slack. Use GitHub (or similar) to conduct code reviews. Use Sprint.ly or similar collaboration/project mgmt system. Read all the blog posts by 37signals and GitHub and others about making distributed teams work.
Transparency: Don't ever silo information. Make sure all information - bugs, feature requests, customer support, KPIs, meeting notes, etc - are easily accessible to all. This is important with a colocated team, and 10x as important with a distributed one.