It certainly helps to have the whole company, or at least whole team, be remote. Then it's a matter of constantly working on process and communication to keep things working smoothly, and with as little friction due to the remote nature as possible. We've experimented with various styles of meetings, collaboration and code review, project tracking, etc., to find what helps everyone on the team to work toward common goals as effectively as possible, while all working remotely. This can mean choosing the most effective tools for the team - chat software, project tracker, etc. - as well as laying out clear processes for how those tools will be used, so everyone is on the same page. (We also like to allow complete flexibility of working hours, which brings with it other challenges that we tackle in a similar manner.)
Finally, while I don't think managing a remote team necessarily needs to be more difficult than managing one in-office, I think the effects of a poor manager are exacerbated by remote work. A poor manager may not know exactly what everyone on the team is doing, or how to motivate individual members, but s/he can at least make sure everyone is there on time and appears to be working. Obviously this is a terrible approach, but with remote work you can't even do that. It's really important to be aware of the team's priorities, and how everyone is working toward them. Also, different developers will work better with varying amounts and flavors of oversight. While this is true of in-office teams as well, it's a bit easier to manage these differences when you have in-person cues to work from. So basically, for the most part, being an effective remote manager requires essentially the same skills as being a good manager in general; they're just that much more important.