I currently live in Chicago which is pretty good for COL/salary ratio, for the average programmer. Caveat: I am not average. I consistently get offers from very low paying jobs- as in "$25/hr on a contract" low. This comes from the tendency to being let go from jobs without having another one lined up, so I never could afford to wait much longer for a better offer to use as leverage. Also, I don't qualify for unemployment insurance.
That has put me in the bottom 15-20% of local jobs by total compensation. If I were to restart as a junior programmer at one of the better companies, I'd actually be getting paid somewhat more than at my last job (and with insurance benefits for once).