2-3 years is common, but it can happen later, so don't panic if it's not retracted by 3 yrs. It'll happen before puberty - or at the very latest, during puberty. My son's was fully retracted shortly after his 2nd birthday.
In fact, if your son's penis is kept clean, don't do *anything* to the foreskin! Dont let *anyone* retract it - especially doctors, as lil_blaze found!! Run the other way if a Dr. Or nurse says you need to pull it back to "help" it retract.
Let your son play with it all he wants and it'll retract from his play and explorations. It's all part of the "master plan," lol. :d
important!
Instill good hygeine now - as his penis retracts, have your son pull it back to swich with water in the bath. He should get in the habit now, and do this at every shower/bath for the rest of his life.