I'm a developer in the Midwest, and that's pretty much it for me. I live where there are houses I can afford. I'm not much for the urban lifestyle.
None of these are exactly cheap cities (Portland might be the closest), and not everyone wants to move to a city just to do a job they could have done from home.
But pay is lower in fly-over country, certainly.
Glassdoor has an average software engineer in Chicago making $75k. Bankrate says the equivalent income in SF would be $113k, and Glassdoor has median salary in SF as $103k.
$10k is a lot of money to be sure, and you are paying a premium for SF, but it's not always so dramatic.
Employers seem to be pretty good at adjusting salaries by geography according to cost of living. You can't really "win" unless you can convince someone to pay you a Bay Area salary to live in the Midwest. And maybe you can, but if they're smart and the market is efficient, it won't last long.