Our first step should be replacing first-past-the-post voting with something that isn't mathematically guaranteed to result in a polarized two-party system.
IRV has the problem where gaining support can actually cost one the election (nonmonotonicity). From http://zesty.ca/voting/sim it seems that approval voting would work reasonably well.