However, one option you may consider is taking a non-technical job someplace and using your programming skills at your non-technical job to impress the hell out of your boss/company.
For example, a few years ago I joined a government human caiptal consulting firm. I basically learned Excel and al ittle VBA to automate some really tedious tasks, and also learned enough to do some interesting analysis.
I impressed a few clients with my work and I became an independent consultant making far more money just because I work in a field that doesn't have many "technical" people in it.
Being a big fish in a small pond that doesn't expect you to be a big fish could lead to some interesting opportunities. Analytical/technical types in non-analytical/technical fields is a good way to do that.