Convert PWM to 3-level voltage
I would still use the push-pull transistors. Either MOSFETs or BJTs.

The problem with push-pull is that you drive +VCC or -VCC. When both transistors are off the output is floating. Therefore you have to add either a weak pulldown (resistor) to ground or another transistor to provide bias (0V) when both push-pull transistors are off.
You'd need 2 I/O from a micro to control this 2 transistor + resistors setup or 3 I/Os for the 3 transistor circuit.

I hope this helps you a little. Good luck.