To be honest, I was able to a shoulder stall in 20 minutes. To start off, get the "feel" of how stalling the ball on your shoulder feels like. Try your own thing a few times:
Tip 1: Tilt your head to the opposite side of the ball. In other words, right shoulder stall = head tilting to left.
Tip 2: Move your arm out to the opposite side of the ball. In other words, right should stall = right arm "reaching" to the left. This gives the ball more support so that you almost squish the ball between your shoulder and cheek.
After you've gotten the feeling down, trying throwing the ball up with just your hands. Get it 5 times in a row, then move on to the opposite shoulder.
Once you've finished with that, try it with juggling:
Tip 3: Try to hit the ball as if you were about to head it, then move into your "stall position".
Tip 4: Hit the ball up lightly.
Tip 5: If you can't stall it from your feet, receive it from your knee (Knee if up to your shoulder).
I pretty much did this and got the stall down very fast.