Some reasons you don't see higher salaries:
1. It's very hard to measure the difference in programming ability directly. Good programmers also tend not to realise just how much better they are, and are generally unwilling/unable to demand higher salaries (not because they're programmers, but because most people by default aren't good at these things.)
2. Good programmers tend to cluster around good companies, one of their advantages being that they're surrounded by people at their level. Think Google, Facebook. Over there, if everyone is as good as you but making the same as you, then you don't feel there is a disparity.
3. Some programmers DO make 300-500k. You just don't hear about it.
4. More importantly, some people make 300-500k in roundabout ways. E.g. some great programmers work as freelancers and make that amount, because that's one way to solve the problem of companies being unwilling to pay so much more.
5. Some programmers with more business-fu start consultancies and startups, making lots of money that way in a non-obvious way.