My daughter is 5 and has been doing this for years. We're torn about what to do - we're growing weary of having our sleep disturbed, and I think it's important for her to start dealing with childhood fears, as she will be starting K in the fall.
The sleeping bag on the floor by the bed is an easy solution if you're not ready to make him sleep alone. My daughter is afraid of things coming through the vents, and none of the cleaver tricks or brainstorming together that others mention worked for her. I tried kindness and understanding (empathy), talking, reasoning, etc., but that didn't work.
We finally resorted to tough love. I explained that I understood her fear, but that she had to trust that we wouldn't put her in a situation that was dangerous for her. Our sleep was important so that we could have fun together during the day. Then when she came into the bedroom at night, we just pushed her back out the door and wouldn't talk to her. She cried, and it was hard, but she came up with another solution on her own.
First she started reading books in the middle of the night until she fell back asleep. But she wasn't getting enough sleep. Now we put her to bed in her bed, but when she wakes up in the middle of the night, she sleeps on the floor in the hallway outside our bedroom door (we keep it closed). She feels safe being closer to us, we have our room to ourselves, we don't get woken up throughout the night, and she gets a full night of sleep.
We still wonder if we're giving her the right amount of support, but I think she feels proud and empowered by her problem solving skills and her ability to spend the night on her own. And I always remind her that it's our job to take care of her, and we wouldn't ask her to do anything that was dangerous to her.