I'm trying to find out if the player has a specific talent, however using GetTalentInfo on login returns nil. I also registered PLAYER_TALENT_UPDATE but even when the event fires the info is still nil.
Mind though that on ui reload there is no such problem, which leads me to believe that GetTalentInfo needs some time to actually produce results after you login.
By login I mean going out to the character selection screen and then loading the game. Is there some event I should be registering?
Even waiting for PLAYER_LOGIN is often not long enough. I've had to use Blizzard's AutoCompleteInfoDelayer for a number of talent-, guild-, and currency-related "do this at login" routines. Waiting the 15 seconds has almost always been good enough (excepting the occasional login on a really laggy server in Dalaran during peak time, etc, etc).
If it's the first time you're logging on (meaning, it's not a /reload) you should register for PLAYER_ALIVE - talents are available at that point. I can't think of a single time they weren't. The only issue is that PLAYER_ALIVE doesn't fire when you reload the interface.
To sort of skip around the issue with /reload I register for PLAYER_ENTERING_WORLD and when that fires I check if GetTalentInfo returns 0, if so I register for PLAYER_ALIVE. Otherwise, it's a /reload and talent-data is already available.