Bell,
Unfortunately, It's not uncommon for toddlers to go through a phase like that when they get to be about your son's age. Also, unfortunately, there isn't any easy way to fix it either, without it being upsetting to both of you. However, it is something that NEEDS to be fixed, before it turns into a regular habit.
My niece has a little girl a bit younger than your son, and she just recently went through dealing with the same behavior from her. She spoke to her pediatrician about it, and he gave her very good advice. It took a few days for her to adjust, but this does work, if you stick to it, no matter how badly you feel when he cries.
Her pediatrician recommended that she have a nightly routine for getting her daughter ready for bed, and that she use the same routine every night, as far as feeding her, getting her into her pajamas, and into her crib. Once her daughter was tucked in, she would read her a short story, or sing her a couple of songs, and then tell her goodnight, and that its time to go to sleep, and leave the room.
You can start by getting your son into a bedtime routine every night, before actually putting him into his crib. Once he's tucked in, either read to him or sing to him, and then kiss him goodnight, tell him that you love him, and leave the room.
When he starts to cry, don't go to him right away. Let him cry for five minutes, and then go into his room. Don't turn on the lights, don't pick him up, or touch him, and don't talk to him. Just let him see that you're there for a minute or two and then leave the room. When he starts crying again, let him cry for another 5 minutes, and then go in again. Just keep doing that until he finally gives up and goes to sleep. If he wakes up in the night, and he doesn't need changing or need a bottle, do the same thing, every time he cries. Do this for 2 or 3 nights (And you'de better get some ear plugs, because you're going to feel terrible letting him cry, but this is for his own good. He has to learn to go to sleep, on his own, or both of you will be sleep deprived and cranky every day!)
After doing this for 2 nights, do the same thing for 2 or 3 more nights, only this time wait 10 minutes before going in. Again, don't pick him up, dont touch him, and don't talk to him. Just let him see that you're there. When you leave the room, if he starts to cry, wait 10 minutes again and do the same thing. Keep repeating that until he finally goes to sleep.
After 2 or 3 nights, do the same thing again, but wait 15 minutes before going in, for 2 or 3 nights. If he keeps crying, just keep repeating this behavior, only every 2 or 3 nights, increase the time that you let him cry by another 5 minutes.
I know that this will be very difficult to do, and will probably make you feel terrible, but it does work.... By doing this, you're not abandoning him, but you're not giving him his own way either, and sooner or later the behavior will stop, and he'll start going to sleep on his own.
My niece's daughter lasted about 6 nights before she finally started going to sleep on her own, without crying, but she did stop, and now bedtime for her and her mother is a much more pleasant experience, and they are both getting a lot more sleep.
Please give it a try, and no matter how hard it is not to comfort him, stick to your guns. He needs to get a proper night's sleep, and you deserve some time to yourself as well before going to bed Sooner or later you will win, and the behavior will stop.
Good luck, and I hope this advice will solve your problem. Please let us know how it goes!
D.