Interesting plan! In my opinion, allowing four weeks is not too much.
If your aim is to get as fast as possible to Zagreb, I would drop the detour to San Marino. Moreover, so as to get from Zurich to Zagreb, I would choose one of the following itineraries, which, in my opinion are more charming, than the route through Milano and Northern Italy.
Zurich - Innsbruck - Brenner - Pusteral (Val Pusteria) - back into
Austria (East Tyrol) - Villach - Ljubliana - Zagreb
Zurich - Munich - Salzburg - Villach - Ljubliana - Zagreb
The second is probably faster and easier to drive, as it involes nearly exclusively motorways (Autobahn). Both have nice variants. For the first one you can cross the Brenner pass via the old raod rather than the highway. For the second one, you can drive over the Tauern and Felbertauern passes, rather than through the tunnels.
As far as the Bucharest - Zurich leg is concerned, I would by no means try to do it in one day. That's really tough. Viamichelin estimates the pure driving time to more than 20 hours. I would make a first stop in Timisoara, then a second stop in or around Vienna.
According To Mark Mayo the itinerary makes up 6400 kilometers. If you are a hard-boiled driver, that should be feasible. Especially given the fact that a road trip is about driving ;-)
Anyway, your plan has the advatage that it can be cut on purpose. For instance, when you are running out of time, you can skip the side trip to Greece. Or the side trip to the Black Sea. Anyway, in the Balkans you have several options to make shortcuts. I would not be worried about the length, as it can easily be adapted on the fly according to driving conditions and personal gusto.
If you do want to see San Marino on the way, You can do it. But then drive on southwards to e.g. Bari, sail to Albania, Montenegro, or Croatia and proceed from there.