While in Geneva, I would recommend taking some day trips to, Murten, Avenches, and Gruyere. Then after your 5 days in and around Geneva, I would head to the Alps for some skiing. I don't ski so I can't say what area is best, but I know that Zermatt, Flims, Davos, and St Moritz are popular and expensive. My friends in Switzerland tend to go to less crowded and less expensive areas, many in the cantons of Schwyz and Uri.
Next, take a drive along the Alpenstrasse from Lindau to Munich, and then up the Romantischestrasse to Rothenburg.
Then head up along the Rhine to Amsterdam to see the tulips in bloom. Tour around the Netherlands while the spring bloom is at its peak.
Now head for Paris via Belgium, or via the Mosel River valley. Spend a few days in Paris and Versailles.
Finally head back to Geneva for your return flight.
I am not an Italy expert, but if you plan another trip there exclusively, I would save it because you can fill your three weeks on the loop above.