B.C.
We went through this scenario with our first daughter when she was three. It was impossible to get a decent night of sleep! I feel for you. We ended up putting a crib mattress (we had an extra) on our floor with her sleeping bag and a pillow so that when she woke up and wanted to be with us she could just quietly come in and sleep on the floor next to our bed. That went on for about six months. We didn't cave and let her in our bed anymore after establishing this other routine. We eventually set up an incentive plan to get her to stay in her own room - can't remember what it was now but think about what your child would want. I think she had to spend 7 nights in her room and then we took her out for ice cream or something. Your son may be a little young to understand the incentive concept but you can definitely create boundaries to keep him out of your bed.
Another method often used is to walk them back to bed and tuck them back in without engaging in conversation. From what I've heard, this process can often be hell for a few nights of going back and forth repeatedly, but once they get the message I think it works pretty well.
You know your son best and what he will respond to and how comfortable you feel providing nighttime nurturing vs taking a hard line. I don't feel that there is a "right way" to deal with sleep issues. The most important thing is that the family is well-rested so go with your gut and try something. Good luck!