Johan Kjølstad lebt in Trondheim und startet für Skogn IL. Sein internationales Debüt gab er im März 2002 bei einem Weltcupsprint in Oslo, bei dem er 48. wurde. Im darauffolgenden Jahr gewann er bei den Juniorenweltmeisterschaften in Sollefteå den Sprinttitel. Kjølstad spezialisierte sich von Beginn seiner Karriere an auf die Sprintstrecke und startete nur selten in Distanzrennen. Recht überraschend gewann der junge Sportler, der bis dahin nur sporadisch im Weltcup eingesetzt wurde, im Januar 2005 in Nové Město na Moravě ein Sprintweltcuprennen. Diesen Erfolg konnte er zu Beginn der Saison 2005/06 beim Teamsprint in Düsseldorf an der Seite von Trond Iversen wiederholen. Von nun an gehörte Kjølstad zur Weltspitze im Sprint und erreichte in der Saison 05/06 mit dem fünften Rang im Sprint-Gesamtweltcup sein bislang bestes Ergebnis in dieser Wertung. Bei den Olympischen Spielen 2006 in Turin belegte er im Sprint Rang sieben. Wenige Wochen nach den Spielen beendete er seine erfolgreichste Weltcup-Saison auf Rang 15 der Weltcup-Gesamtwertung. In der Sprintweltcup-Wertung lag er auf Rang fünf. Vor dem Saisonende konnte Kjølstad sich im Teamsprint noch einmal einen zweiten Rang in Sapporo sichern.
In den folgenden Jahren konnte er diese Leistung nur schwer halten. In die Saison 2006/07 startete er so schwach, dass er kurz darauf für einige Rennen in den Scandinavian Cup wechselte. Erst zum Ende Januar 2007 kam er in Rybinsk wieder im Weltcup-Team zum Einsatz und erreichte im Sprint Rang 11. Zum Saisonende hin konnte er sich leicht steigern und beendete den Sprint in Lahti auf Rang fünf. Bei den Norwegischen Meisterschaften 2007 lief er ebenfalls als Fünfter ins Ziel, diesmal jedoch über 50 km.
Die neue Saison 2007/08 begann er mit einem zweiten Platz beim Teamsprintweltcup von Düsseldorf. Am 1. Dezember 2007 gelang Kjølstad in Kuusamo sein zweiter Einzel-Weltcupsieg. Es blieb bis zum Saisonende sein einziger Sieg und auch sein einziger Einzel-Podestrang. In die neue Saison 2008/09 startete er noch schwächer als im Vorjahr. In Gjøvik gewann Kjølstad bei den Norwegischen Nordischen Skimeisterschaften die Silbermedaille im Sprint.
Bei den Nordischen Skiweltmeisterschaften 2009 in Liberec gewann er hinter seinem Landsmann Ola Vigen Hattestad die Silbermedaille im Sprintwettbewerb und gemeinsam mit diesem den Titel im Teamsprint. Die Saison beendete er wenige Wochen später nach einem schwachen 77. Platz beim Saisonfinale in Falun auf dem 38. Platz der Weltcup-Gesamtwertung.
In der Saison 2009/10 gelang ihm nur knapp die Qualifikation für die Olympischen Winterspiele 2010 in Vancouver. Dort blieb er als Neunter im Sprint jedoch erneut ohne Medaille. In der folgenden Saison 2010/11 sicherte sich Kjølstad in Liberec noch einmal einen Teamsprint-Weltcupsieg. Es war sein letzter Erfolg.
Nach durchweg nur noch schwachen Ergebnissen bestritt er im Februar 2012 in Szklarska Poręba sein letztes Weltcup-Rennen. Das Sprint-Rennen beendete er auf Rang 60. In der Folge konzentrierte sich Kjølstad auf Starts bei FIS-Rennen oder im Marathon-Cup. Im Februar 2014 gewann er beim König-Ludwig-Lauf über 50 km klassisch.[1]
Zu Beginn der Saison 2015/16 belegte er den dritten Platz beim La Sgambeda und den zweiten Rang beim Isergebirgslauf. Im weiteren Saisonverlauf wurde er Zweiter beim Kaiser-Maximilian-Lauf und siegte beim Årefjällsloppet. Zum Saisonende erreichte er den vierten Platz in der Gesamtwertung der Ski Classics. Im Januar 2017 wurde er beim Marcialonga Zweiter.