Control multiple servos using pic18f microcontroller?
Not easily.

You see, you have written there what is known as blocking code.  The PIC can't do anything else while it's processing your software PWM signal because you are using delays.

Instead you need to step away from that whole concept and instead to things based on time, not waiting.

For instance, when you get up in the morning, do you lie there awake all night staring at your clock until it's time to get up, or do you set the alarm for 7:30 then go to sleep, until the clock wakes you up?

Most PICs make it even easier, by allowing you to tie a timer to an output compare module, which will generate your PWM waveform purely in hardware.  The more output compare modules and timers you have the more servos you can drive with it.

Even without using output compare, there are ways of using a timer to trigger an alarm the next time an output is due to change state.  It's up to you to come up with how best to decide when that is, and change the timer's time accordingly.