Hi, here is the lua solution! 
Code:
function On_Gossip(pUnit, event, player)
if (player:HasFinishedQuest(QUESTID) == true) then
pUnit:GossipCreateMenu(123456, player, 0)
pUnit:GossipMenuAddItem(0, "Teleport me!", 1, 0)
pUnit:GossipSendMenu(player)
else
pUnit:SendBroadcastMessage("You need to do the quest first!")
end
end
function Gossip_Submenus(pUnit, event, player, id, intid, code)
if(intid == 1) then
player:Teleport(MAPID, 1802.425537, 6785.877441, 68.712860)
end
end
RegisterUnitGossipEvent(NPCID, 1, "On_Gossip")
RegisterUnitGossipEvent(NPCID, 2, "Gossip_Submenus")
Replace the QUESTID with your Quest, the MAPID with the mapid, who you want to teleport and the NPCID with the npc.
This should work.
Create a npc and set his flags to 1(Gossip) 
If there is any error let me know, i didnt test it.