Instead of having everyone gather ahead of time and then have the birthday person arrive at a particular location to surprise them, go to the location with the birthday guest and then have all
the invited guests come 1/2 hour after you arrive.
For example: You could tell the guests that you will be at a particular restaurant at 6:00 pm and invite them to join you from 6:30 until 7:30. People can come more sporadically and each group of guests will surprise the birthday person. They won't really know it's a surprise party until after several people arrive.