Solution 1:

Here is a method I came up with while pondering your question, be warned though, I haven't had a chance to test it out, but I think it might work. Here are the commands and command block setup:

1: /testfor @e[type=snowball]
2: /execute @e[type=snowball] /tp @p <x> <y> <z>
3: /setblock ~ ~ ~ redstone_block 0 destroy

Remember to put numbers next to the ~ symbols to tell the command where to place the redstone block relative to the command block so it's constantly running the command in the next command block. Now here's the setup, please note that being able to to what I am telling you to do does require basic command and redstone knowledge:

1 = command block #1
2 = command block #2
3 = command block #3
[] = redstone comparator
{} = redstone repeater with a 2 tick delay
# = redstone block

3#1[]{}2

Also, you might want to run this command as to not lag your server:

/gamerule doTileDrops false

I also forgot to mention, you must be playing in snapshot 14w21a or later.