We had a dummy for dd and for a while it looked like we'd have it forever: she just couldn't settle without it.
It got to the point where we gave it to her every time she cried (which was a lot). Then, when she was about 6 months old and had been weaned and was eating 4-5 meals and only 2-3 bottles a day, she fell asleep in my arms so I put her to bed, forgetting the dummy.
All that night I was waiting on tenterhooks for her to wake screaming for it, like she did every time it came out of her mouth (5+ times a night, sometimes a few times an hour). She slept 7-7, not waking once, and has done since.
You can do one of two things: bite the bullet and go cold turkey, or wait until they're ready to give it up, which may take years. Perhaps let your ds almost fall asleep with it, then take it away, just as he's dropping? Or go completely cold turkey and if he won't nap in bed without it, go for a walk at nap time so he still gets his sleep quota and isn't overtired ready for bedtime?
As an aside, I sometimes find that, if she is struggling to settle, staying with my dd can make her worse in that she keeps looking for me, as though she can't understand why I'm not picking her up and talking to/playing with/cuddling her, and gets herself progressively more angry and upset. If I leave the room, she quickly settles herself down.
disclaimer: I am not advocating or advising controlled crying or cry it out, I did not use these methods with either of my children, it's just something I've noticed, that they settle more or less as soon as I walk away, yet if I stay and cuddle, shush or talk to them they wind up and end up not settling and crying more.