The problem you have is that TotalGameTime.Seconds goes from 59 to 0 instead of 60, so it never actually hits 60, so that's the first thing to consider. You cannot simply check for TotalGameTime.Seconds == 0 either, because your game would terminate in the very first game loop when no time has really passed.
So what you really have to check for is the transition from gametime 59 to 0.
Therefore, what you could do is something like:
int seconds = 0; //a field outside the game loop
...
if(gameTime.TotalGameTime.Seconds == 0 && seconds == 59)
{
//60 seconds have passed, terminate the game now
}
else
{
seconds = gameTime.TotalGameTime.Seconds;
}
Note however the following remark:
Fixed-step clocks update by a fixed time span upon every clock step. This results in uniform clock steps that may not actually track the wall clock time. Fixed step clocks were popular on console systems where one had tight control over code and a fixed system performance. Fixed-step clocks are also useful when trying to achieve deterministic updates for debugging, offline rendering, or other such scenarios.
That means that even if your TotalGameTime says 60 seconds have passed, it may not be real world 60 seconds. In the worst case, if a player slows down his system, it might even be a possible exploit/cheat, so you should explore other ways of tracking time as well.