My DS#1 (who will be *3* in June) still has cradle cap. I actually wish I'd done something when he was younger and had very little hair, as it'd be easier to get rid of it. For DS#2, I actually used head and shoulders, per doctor's instructions, and it did work (although I didn't use it exactly like she said - she told me "head to toe", and I just do it on his hair once every 2-3 weeks or so). DS#1 still has the cradle cap, and I haven't used H&S on him because he won't tip his head back to keep stuff from going in his eyes, so I *have* to use a shampoo that's tear-free. We're getting a removeable shower head soon, so hopefully that will help.
In *most* kids, cradle cap supposedly goes away by 1 year old, but my kid still has it, and my nephew even still has a bit at age 8!
Do NOT put oil on it, or if you do, make sure you wash the oil out afterward. Cradle cap is caused by an excess of oil, so oiling and leaving it on will just make it worse. I also found that I had to use a non-natural shampoo on DS#1 (the kind that strips the oils), which is what I have to use on my own hair too. I have natural shampoo bars that work great on alot of friends' hair, but in mine, my hair is just too oily and needs the oil stripped. I end up looking like I haven't washed my hair. I suspect my sons have inherited that aspect of my hair. They get all the bad stuff from me!
ETA: You can use oil to loosen it, then 15 minutes later, do a bath and scrub the cradle cap with a brush (I use a potato brush), and the oil should have loosened it up enough to scrub alot of it off. Then make sure you wash the oil out really good. I've done this once with DS#1 and it got about half of it out, but his is just so bad that it will take alot more than that.