Задача достаточно интересная, и просто она не решается.
Как один из вариантов реализации - на каждый город - отдельный инфоблок с торговым каталогом. Но описания товаров, свойства и картинки берутся из другого инфоблока-справочника номенклатуры. Таким образом, например, можно и остатки из 1С выгружать раздельно по разным городам, и ценообразование отдельно делать.
Со службами доставки может быть сложнее. Но ничего не мешает использовать префиксы по городам для названий способов доставки, и скопированный компонент sale.order.ajax модифицировать для фильтрации этих способов.
Что касается переключалки городов - посмотрите в Marketplace на http://marketplace.1c-bitrix.ru/solutions/altasib.geoip/ или http://marketplace.1c-bitrix.ru/solutions/yenisite.geoip/
Ну и если что - обращайтесь, поможем :) code@zixo.ru