A few years ago congress had a nice solution via a market mechanisms, have sufficiently large banks be required to have their cards support at least 2 card networks, via which the merchant may at at swipe time decide which network to run against. Unfortunately like any good idea, it died in congress.