Further comments validating the Bernina route suggestion, based on minimizing transfers and maximizing travel pleasure:
While you “can” get from Varenna to Zurich with only one transfer, I do not recommend that, for the following reasons:
1) this route goes through the deep Gotthard Basistunnel—-at 35 miles, the world’s longest and deepest railway tunnel. You see nothing of the Alps scenery. And riding through those long deep tunnels is no fun at all.
2) Milano Centrale is a huge station and there can be a lot of walking between platforms for the transfer.
3). You really do want to head to Luzern, not to Zurich, for your last 3-4 days before flying out. You do not need to spend a night in Zurich at all, unless your flight is an early morning one. There are direct trains from Luzern right into the Zurich airport twice each hour, taking 1 h 12 minutes. So you save one train transfer right there (and a hotel change as well).
I really like the Bernina route that others recommended above. To minimize transfers on that route, I suggest taking the train northbound from Varenna to Tirano on the border, changing there to a Bernina Express train which goes to Chur with no changes. (The regional trains on this route will have 2 train changes on the way to Chur from Tirano). If you depart Varenna at 11:25, you arrive at Tirano at 12:52, giving you time for a light lunch before boarding the Bernina Express at 14:24. Overnight in Chur (a small, pleasant town) and the next day you head to Luzern. You can choose between a direct train (no changes) that takes 3 h 39 minutes, or a faster ride (2 h 17 minutes) with a single change at the Zurich main station.
I considered suggesting the Gotthard Panorama Express as a possible alternative to the Bernina Express route, in case you do not like that idea, but there are lots of changes on that route, and you would having trouble getting to Lugano in time for the once-a-day departure at 9:22. So I really believe the Bernina Express is the best fit for your travel wishes.