Garon spielte noch bis 1998 in der LHJMQ, als er zum besten Torhüter der Liga ernannt wurde, ehe er sich den Fredericton Canadiens anschloss, dem damaligen Farmteam der Canadiens de Montréal. Zur Saison 1999/2000 zog das Team nach Québec City um und nannte sich fortan Citadelles de Québec. Garon blieb Stammtorwart des Teams der American Hockey League und kam im Jahr 2000 zum ersten Mal für Montréal in der National Hockey League zum Einsatz. Trotzdem spielte er in den folgenden Jahren fast ausschließlich in der AHL für die Farmteams von Montréal. Von 2000 bis 2004 absolvierte er nur 43 Spiele in der NHL.
Im Sommer 2004 wurde Garon zu den Los Angeles Kings transferiert, doch sein Debüt in Kalifornien verzögerte sich, da die Saison 2004/05 wegen des Lockouts ausfiel. Garon spielte in der Zeit für die Manchester Monarchs in der AHL. Während der Spielzeit 2005/06 wurde er Stammtorhüter der Los Angeles Kings, verpasste jedoch die Teilnahme an den Playoffs knapp. Im Sommer 2006 wurde sein Vertrag um ein Jahr verlängert. Mit Dan Cloutier kam ein erfahrener Konkurrent ins Team, gegen den er sich aber durchsetzen konnte, allerdings verletzte sich Garon während der Saison mehrfach und musste daher mehrere Spiele pausieren. Die Playoffs verpasste Los Angeles erneut.
Die Kings entschieden sich im Sommer 2007 den Vertrag von Garon nicht zu verlängern und so unterschrieb er einen Zweijahresvertrag über 2,2 Millionen Dollar bei den Edmonton Oilers. Während der Saison 2007/08 verdrängte Garon den Oilers Stammtorhüter Dwayne Roloson. Unter anderem trug Garon zu einem neuen NHL-Rekord von 13 gewonnenen Shootouts bei, in dem er eine perfekte Serie von 10:0-Shootouts hinlegte und dabei von 32 Torschüssen 30 hielt. Garon verletzte sich gegen Ende der Saison und konnte die Oilers nicht im Kampf um einen Playoff-Platz unterstützen.
In der Saison 2008/09 spielte Garon in nur 15 Spielen für die Oilers, von denen er sechs gewann und acht verlor. Dwayne Roloson setzte sich als Stammtorhüter durch und auch Jeff Drouin-Deslauriers erzielte bessere Ergebnisse. Drei Torhüter schränkten die Möglichkeiten der Oilers zu sehr ein, weshalb Garon gegen Dany Sabourin, Ryan Stone und einem Viertrunden-Wahlrecht im NHL Entry Draft 2011 von Pittsburgh Penguins eingetauscht wurde. Bei den Penguins fungierte er als Ersatz von Marc-André Fleury und feierte mit dem Team am Saisonende den Gewinn des Stanley Cups.
Bereits umgehend nach dem Erfolg unterschrieb Garon im Juli 2009 als Free Agent einen Vertrag bei den Columbus Blue Jackets, wo er in zwei Jahren als Back-up von Steve Mason zu 71 Einsätzen kam. Am 1. Juli 2011 unterzeichnete Garon – erneut als Free Agent – einen Kontrakt bei den Tampa Bay Lightning. Zwei Jahre später lief dieser Vertrag aus und Garon nahm im September 2013 am Trainingscamp der Los Angeles Kings teil, konnte sich aber nicht für einen Vertrag empfehlen. Im Oktober 2013 wurde er vom HK Awangard Omsk aus der Kontinentalen Hockey-Liga als Ersatz für Teemu Lassila verpflichtet, aber am 1. Januar 2014 aufgrund einer neuen Verletzung wieder entlassen. Im Mai 2014 gab der 36-Jährige schließlich seinen Rückzug vom Profisport bekannt.
International
Für sein Heimatland spielte Garon bei der Junioren-Weltmeisterschaft 1998, wo das kanadische Team aber lediglich den achten Rang belegte. Für die Herrenauswahl gehörte der Torwart bei der Weltmeisterschaft 2008 zum Kader, der die Silbermedaille gewann. Hinter den etatmäßigen Torhütern Cam Ward und Pascal Leclaire blieb Garon aber ohne Einsatzminuten.
(Legende zur Torhüterstatistik: GP oder Sp = Spiele insgesamt; W oder S = Siege; L oder N = Niederlagen; T oder U oder OT = Unentschieden oder Overtime- bzw. Shootout-Niederlage; Min. = Minuten; SOG oder SaT = Schüsse aufs Tor; GA oder GT = Gegentore; SO = Shutouts; GAA oder GTS = Gegentorschnitt; Sv% oder SVS% = Fangquote; EN = Empty Net Goal; 1Play-downs/Relegation; Kursiv: Statistik nicht vollständig)