Still waiting on the "killer app" for remote programming to make it widespread. Tmux and Vim isn't it..
Working remotely is a skill. It is very different from working in an office environment, and requires that you compensate for your lack of physical presence with proper behavior and strategy.
Remote, you can often get lots of uninterrupted work done, but sometimes this can be a danger, because interruptions often imply that you're a "go-to" person. You also miss out on a lot of the social stuff, which (because we're primates, get used to it) turns out to be important for reviews and who-gets-to-work-on-what decisions.
Tools help, but they are a nearly insignificant part of the story once you're beyond the simple capacity to check in code.
I've written up my thoughts on what is needed ( https://gist.github.com/1999816 ). TL;DR - a lightweight protocol to share buffer updates, tab changes, opening files, etc.