Working at home every day is not efficient if you're into software development for example.
In one whiteboard session with some coworkers you get more done than by e-mail for two weeks.
But there are tasks that require absolute concentration if you want to get the best results, like designing and implementing a complex algorithm, or fixing a complex bug.
My days in the office are mostly filled with meetings, Skype calls with the offshore team, writing e-mails, etc. I work at home one day per week, and that's the day that I usually get most programming work done. It allows me to focus for a couple of hours without being disturbed.
The only real alternative to working at home is working really late. Arrive at 11:00 and leave at 20:00. Most coworkers are probably gone around 18:00, which leaves you with two hours to get some real shit done.