The SS33 hugs the western shore of Lake Maggiore. Driving time from Maggiore's southern reaches to Milan (62km southeast of the lake) is about 70 minutes.
Lake Maggiore's west bank is fairly well connected by rail, with trains running the length of the east bank and up the west bank to Stresa before continuing on to Domodossola. Trains from both Milano Centrale and Porta Garibaldi run regularly to Arona (€6.10, one hour) and Stresa (€8.60, 70 minutes).
Ferries and hydrofoils around the lake are operated by Navigazione Lago Maggiore, which has ticket offices at most boat landings around the lake and a main office in Arona. Services are drastically reduced in autumn and winter.
The only car ferry connecting the western and eastern shores for motorists crosses between Verbania-Intra and Laveno. Ferries run every 20 minutes; one-way transport costs from €7.80 for a car and driver, €5 for a bicycle and cyclist, or €6 to €7.80 for a motorcycle and its rider.
One-day return tickets from key points at the Italian end of the lake to the towns (including Locarno) on the Swiss side are available from March to October. Adults/children pay around €16.90/8.50 for a typical day's travel, but it could be more or less depending depending on your departure port – check the website for details. Day passes for adults/children cost Sfr37/18 on the Swiss side.
Lago Maggiore Express is a picturesque day trip under your own steam (no guide) that is an excellent way to get an overview of Lake Maggiore and its hinterland, particularly if you have limited time. It includes train travel from Arona or Stresa to Domodossola, from where you get the charming little Centovalli Train to Locarno (Switzerland) and a ferry back from Locarno to Stresa. The two-day version is perhaps better value if you have the time. Tickets are available from any ticket office of Navigazione Lago Maggiore on the boat landings.