Brushless DC Motor - Sensoreless Startup Algorithm
you could use open-loop to start up, so you would linearly increase the pwm duty-cycle and commutation frequency until you reach some speed at which you can get meaningful signals...  or just use 2 pots and see what works.

you also need to do something about driving the high side transistors... their source is floating so you have to drive the gate higher than that value. you'd need some sort of bootstrap for n-channels or like a push-pull type thing if you use p's.

also i would recommend testing it on a resistor bridge before connecting it to a motor, just my $.02.