The simple solution is to have municipal public exchanges that all ISPs must connect to. Then all services that are made available locally have to connect up to that exchange. This same model was used in phone service to break up local and long distance services many decades ago. It is also a model that is used for exchanges all around the world for co-location and interconnection between networks. This allows for a more regulated local connection, while allowing anyone to off "add-on" services to those customers. I would be able to tell my local ISP -- route all my traffic through the exchange to another service provider which provides interconnections to the rest of the world. Local cable TV, or phone service could then be able to connect up to the exchange and offer service. It would allow for more competition in offering services. For business this is already done with carriers like Cogent, Level 3, etc.