Yeah. I think the only two sane solutions are:

1) Require the patent to be used within X period of time in a product which is made available for sale. This may or may not work for smaller inventors who might need time to capitalize before offering the product. Or if they try to sell the product to a company, the company can just refuse, knowing the inventor wouldn't be able to market it himself, and just use his idea when the patent short-circuits due to non-use.

2) Simply invalidate patents in areas where patents are being used purely as anticompetitive measures instead of as incentive. Example: patents on software concepts or Internet business models. I think this is a much better approach. Even if patents are granted in these areas, a judge can easily strike them down just by categorical analysis.