There is no need for PWM in driving steppers unless you are making a home brew current controlled type driver, which is not something I would recommend as there are ICs out there to do that for you.
All you need is a couple of timer interrupts and 4 pins per motor. Your driver IC for unipolar motors could be as simple as a ULN2003 etc or a nice current sensing chopping driver (to get more torque at high speeds) like the SLA7024M (you should really use the enable pin on this too, so 5 pins).
If you wanted you could reduce pins by using a smarter IC, like those from Allegro micro. You can make a full robot with an 18f452/16f877 sized device (pin wise) and have pins to spare so what's the problem with using pins to simplify the design? (removing the need for a L297 or equivalent).
I would do the following pseudo code wise:
* Set up two timers to produce interrupts on overflow
* On overflow read out the bit pattern for that particular step (out of a look up table) and output to it the appropriate stepper pins on your micro. Increment your step position index for that particular motor.
If the step position index == end, reset it to 0.
* reset the timer to the next step period and reset the timers interrupt flag (as PIC's have very few real interrupts and use flags in registers to determine which device caused the interrupt).
Hope that helps