You wouldn't normally use PWM for a stepper motor (at least I wouldn't), you simply power the various coils in the sequence you want, full or half step, and for the direction you want. I don't see the use of PWM at all?.
I would probably do it using a table, with interrupt routines providing the stepping speed, with each step accessing the next entry in the table. It's probably easier to use seperate tables for forward and reverse, rather than try and step backwards through a table. For half stepping you simply use tables twice as long.
Some higher level driver support PWM for stepping motor. With those chips, you can use PWM to control your motor. However, as in my experiments, I used a table of control vectors as Nigel recommended.
By the way, you can see how control a stepping with Douglas W. Jones tutorial.