I do contract work so my 'employers' don't get the option of having me in the office; it's not something I offer.
I live in the middle of San Francisco so there's many jobs I could reach with a minimal commute (or on a Google/Apple/etc bus) but I choose not to because I really like working from home. I do a mixture of hardware+software jobs so I have a well equipped man-cave with everything my geekin' heart desires, all purchased with pre-tax dollars as well a chunk of my cable inet and rent being a business expense. This doesn't suck at all.
I get to pick the jobs I do; tending to alternate between doing cloud server work and embedded systems work (the opposite ends of the spectrum in many ways) which keeps things interesting; I hugely enjoy the work I do, so motivating myself to put the hours in isn't a problem.
I'm fortunate to be on my wife's health insurance which otherwise would be a significant expense. We have a 4.5year old daughter and WFH means I'm around in the mornings and evenings to do school runs and help out, which contributes greatly to domestic harmony as well as being fun. Typically I'll work 9.30am till 5.30 and very frequently squeeze in a 10pm-2am shift as well (like I say, I enjoy my work a lot).
I really enjoy not having to attend pointless meetings or do tedious commutes :-)
I use Google Hangouts a lot for work stuff; it's definitely better than pure voice chat because you can see if everyone's paying attention, but most communications is email and text chat. Github is fantastic for distributed working both for the obvious reasons but also because it allows less-technical management types to see who's been doing what and be reassured progress is being made.
Another big win is vacation time; I simply go whenever it suits my family, not at the whim of my employer. Most of the time I'll take a laptop with me and be available for some working hours, sometimes I'll go off for longer periods (e.g. several weeks with my folks in Australia) and set up a mini home-office there.
It's not for everyone, especially if you're the go-stir-crazy-at-home type who wants company, but it's perfect for me; recently I interviewed for a "real" job and got some decent offers but realized I really didn't want to compromise on many of the above advantages of WFH - especially being around mornings and evenings for my daughter (in most coding jobs it's not 'the done thing' to leave at 5pm).
Overall I think the whole WFH thing is much easier to swing if you can do contract work rather than be an employee.
As for finding gigs - here's a trick I learned; interview for a few full time in-office positions in your chosen field. When you get a full-time job offer, very politely decline it and offer to do the same work but as a contractor. In some cases they won't bite, but frequently they will; their logic being:
a) We would have hired this guy full time so we've vetted him and want him to work for us
b) It's about the same price (I price myself at what appears to be a fairly high rate as a contractor but once you subtract the cost of providing me an office, benefits, paid vacation etc, it's about the same)
c) It's commitment-free - if we don't like the work we don't have to fire him we just don't give him more tasks.
d) We need someone to do X right now; let's give it to him and see how it goes, we can still look for a full-time employee
So it's not actually the bait-and-switch it appears to be, you're actually doing them a favor :-)
I typically find that I have more contract job offers than I can do; previous clients frequently call you up out of the blue when they need something doing or recommend you to others.
Finally, there's a lot of mental freedom with this approach, rather than your manager saying "I need you to..." they say "do you have time to..."; it's much more respectful. Also I'm never afraid of losing my job; because I do a fairly wide variety of different things my resume is pretty colorful and I'm not a one trick pony.