I think the biggest problem is that a two party system completely dumbs down the whole process of government and removes nuance. If you're pro-gun, you pretty much have to be a Republican and if you're pro-gay, you pretty much have to be a Democrat.
Remove the winner-take-all election contents and rather divide districts such that they elect several representatives from each district. This eventually leads to choices that don't exist along party lines and you can find a candidate that more closely represents your views (e.g., pro-gun, pro-gay, anti-abortion, pro-immigration, etc.) that has a reasonable chance at election.
Any changes that make it more difficult for political parties to operate would go a long way towards improving the country. Politicians would have to start voting their own mind, or better yet talking with their electorate, rather than simply falling into line with the party, and there would be less pandering to small, vocal parties that serve as important parts of the political parties' bases.