That is a lot of train travel. I agree with Andre that the William Tell is redundant, as it would take you to Lugano twice if you do the whole Bernina Express. But I also suggest you skip the bus ride to Lugano.
So here is how you can do all the rest on the named scenic trains that you listed:
Fly into Zurich and head straight to Lucerne ( only an hour away). Spend 2 nights there and take a boat ride to cover what you would on the William Tell. I suggest the Rigi loop by boat, cogwheel train and cablecar then boat again. It is wonderful.
From Lucerne take the Golden Pass route as far as Interlaken, and transfer to Lauterbrunnen 20 min. Away. Spend 2-3 nights in Lauterbrunnen or a mountain village. Then return to Interlaken and continue on the Golden Pass route to Montreux.
Spend 1 or 2 nights in Montreux, then head to Zermatt. One night there and take the Glacier Express to St. Moritz. You can spend a night or two in either St. Moritz or Pontresina and then take the Bernina Express to Tirano. At Tirano, instead of catching the bus to Lugano, ride the train to Varenna on Lake Como. Very pretty village.
It is only hour by train from Varenna to Milan. At Milan you can either end your journey and catch a plane home, or transfer to a train back into Switzerland. The direct route back to Zurich goes through LugNo, so if it is really on your must-do list you can spend a night there. Then continue to Zurich for your flight home if that is your flight plan. The train between Lugano and Zurich will cover the train portion of the William Tell.