Hi S.. I feel your pain. It is so frustrating to lull your little one to sleep, and dread what I always thought of as the 'sleep transfer roulette.' Hoping they would stay asleep for the transfer to the crib, and then feeling like I had to start all over... I remember it vividly.
So, there is no one solution for every child or mother, so I can only share my experience in this area, which I have shared before on this site. With my first daughter, I would nurse her to sleep and if she woke when I put her down, I'd get her up right away. Or,I would let her sleep on me. By the time she was 7 months old, she couldn't take a nap unless I managed to get her to sleep and sneaked her into her crib. I was lucky one day, and my husband's aunt was home from work one day, and watched this torturous routine. She observed (after 3 failed attempts to nurse her to sleep) that my daughter didn't know when was the 'real' nap time, and when I was just trying to put her down because she had fallen asleep. It was like a lightbulb went off, as I realized that I hadn't done my job and been the mom in charge of our schedule. She wasn't a newborn anymore, and it was my job to teach her when to sleep. As a baby, of course she wanted to sleep on me or have me do the work to get her to go to sleep. It was my job to give her the assurance and the firm boundaries that would have her learn to put herself to sleep. Because I had set up some bad habits, we had to do a really tough sleep training regimen. We had to re-learn our nap routine, which meant that she had to learn that when I put her down, she couldn't get back out until she slept. It was torment, but I realized that if I got her up, I'd just be teaching her that if she cries for long enough, she could get up. I had to re-train her and myself, or I was going to be in big trouble with a toddler who needed me to get her asleep. Because I had given her such mixed signals for her whole life, she cried for 2 hours the first day. The 3rd day was the worst, when she cried for 4 hours. It was scary then, but it is a funny story now. We had a breathing monitor on the crib, and I would come and check that she was okay every 15 min or so, and spent the rest of the time pacing in the yard because it was such torment to hear her to cry. After 4 hours, I checked on her and the alarm was going off! I freaked out when I saw she was laying down in her crib, not crying anymore. I thought she was dead. I grabbed her and shouted her name, and she woke up. The poor baby had finally fallen asleep and had somehow disconnected the plug for the monitor, which made it go off. Anyway, after 5 days of crying in protest to being put down awake, she learned to put herself to sleep whenever I put her in the crib. She might cry for a few minutes, but not long. Now I should mention that I still nursed her as usual, and set up a routine of turning on music, which became a powerful cue to her that it was time to sleep. But I became very selective about when I would try to put her down, because I wouldn't break the rule of not getting her out until she had fallen asleep, at least for a few minutes.
Madeleine is going to turn 4 next week, and she no longer naps. She is an amazing sleeper, and an amazing little girl. The lessons I learned with her have helped me train my other daughter, who is now two. I'm in the process of training my little boy, who is 7 months old. My current challenge is that they all share a room, but that is another story.
I hope this helps, and you know that there are people out there who feel your frustration. Your son is lucky to have such a loving and devoted mommy.
Good luck!