Here's my case study:
Because of my wife's business (she's a violin teacher with a large, productive studio) and because commuting is not something that I am willing to do, I feel compelled to find clients for remote work.
While it'd be fun to move to Austin and I feel like I could find a stable "good" job there pretty quickly, I like working for myself and ironically (as a musician- It's as profitable side business for me) there are probably more paying music gigs out here in the sticks.
About three years ago, I started out doing brochure marketing sites for a shyster local "social media" salesman who knew very little about web marketing but who loved to sell. At the time, my skills were basically photoshop, the (relatively extensive) programming classes I had as a child in high school, and some knowledge of markup.
I did about 80 sites for the guy over 8 months plus countless odd jobs like domain name transfers, troubleshooting email problems, writing annoying forms (the first routine I wrote that really solved a problem for me was a short bit to take a keyed array of field names and labels to generate/validate/process a form based off those values)... I spent almost all my free time on educating myself about whatever I though would be useful, and built sites for myself and some "on the side" clients in Joomla, Drupal, and WordPress.
I also had to hire and help manage a three-person technical team and deal with all the over promising that the sales guy would do. This was a good education in and of itself.
At the end of that period, I reasoned that the sales guy/owner could sell websites not knowing how they worked, I could probably sell 1/10th the number of websites and double my income. So I sold two local web sites and quit... it didn't hurt that my income was already only around $16/hr with no benefits, so replacing that was not a big deal.
For the next six months, I sold more sites and did a whole lot of cold calling and contacting folks via craigslist, and found an agency client who would pay 20/hr and give me plenty of work, and then using the same process I found an agency who would pay 30/hr, and for the last year I've been at around 65/hr and as busy as I'd like to be.
Mostly, after the first few craigslist clients, my new business comes from personal referrals. It doesn't hurt that I make myself very available, I'm quite friendly, and I do a whole lot of free consultation that I consider to be business development-- people are really happy to direct work to folks who are helpful.
I don't usually sell work directly; mostly I work with agencies in Austin who are marking up what I am doing by around 50%.
I brought in around 65K last year, which is not great, but I also worked a lot of 4-day weeks (if I don't count checking in and doing a half hour of work on a late Friday, or occasionally spending a Sunday reworking something that had to be done ASAP) and I usually am able to do my work in two 3-hour sessions... still no benefits, but I am young and paid off a substantial chunk of the student loans accrued pursuing an unfortunate PhD in English.
By studying consistently, playing with new technologies, and being willing to take on a lot of work on odd jobs troubleshooting stuff, I've gotten to where I can build modules for Magento or aMember, themes and plugins for WordPress, and generally working in clean, patterns that seem elegant and satisfying.
I've learned how to deploy AWS EC2s, how to work on the *nix command lines, git, ssh, enough SQL to understand joins and how to root through a database and make changes to an entire managed site at once... nothing awesome or special, but stuff I find interesting and fun.
My feeling is that I have just started getting a "good" grasp on programming, but if I can keep this going for another couple of years then I might actually get good at programming... I'm getting a little tired of doing marketing oriented work, but to be honest my skills up to the last year really weren't all that unique (other than the fact that people like working with me for whatever various reasons).
I hope that is helpful for you... as I said, I am currently idled for personal reasons and am both cleaning out my development machine, the last couple of projects on my plate... and reevaluating what I'm doing, so it was helpful for me to write all that out.