A car is the best bet, but there are also at least hourly trains up from Milan that service the major towns on the southern half of the Lake Maggiore's west shore:
Arona (60 - 75 min.), Verbania (75 - 100 min.), Stresa (52 - 90 min).

Note that the fastest trains leave from Milan's Central station, but there is more frequent (and only slightly slower) service from Milan's Porta Garibaldi station.

There are also eight trains daily from Torino (Turin) to Arona (2 - 3 hours; most change in Santhia or Novara).

The east shore of Lake Maggiore is best reached (and explored) by car.

The northern fifth or so of the lake is actually in Switzerland. The towns on that side of the border are a bit more disappointingly staid, modern, and Swiss than their Italian neighbors. If you're a fan of the artistic Arp clan (Jan, Hans, and Margherita), there's acollection of their works in the modern art gallery of Casa Rusca, in Locarno, the main city of the Swiss end of Lake Maggiore.

The western shore of Lake Maggiore is served by the Milan to Geneva (Switzerland) rail line with stops in several towns including Arona and Stresa.

Locarno, Switzerland, at the north end of the lake is also on the rail line.