Karlberg, der für den IK Wega aus Göteborg startete, wurde im Jahr 1983 schwedischer Juniorenmeister im Kleinen Vierkampf und im Jahr 1987 schwedischer Meister im Großen Vierkampf sowie im Jahr 1989 über 1500 m. Zudem errang er bei schwedischen Meisterschaften fünfmal den dritten und neunmal den zweiten Platz. International trat er erstmals bei den Juniorenweltmeisterschaften 1981 in Elverum in Erscheinung, wobei er den 15. Platz im Kleinen Vierkampf errang. Im Jahr 1982 kam er bei den Juniorenweltmeisterschaften in Innsbruck auf den zehnten Platz im Kleinen Vierkampf. In den folgenden Jahren nahm er an fünf Mehrkampfweltmeisterschaften (1985 in Hamar, 1986 in Inzell, 1987 in Heerenveen, 1988 in Almma-Ata und 1990 in Innsbruck) teil. Seine beste Platzierung dabei war im Jahr 1990 in Innsbruck der achte Platz im Großen Vierkampf. Zudem startete er bei fünf Mehrkampfeuropameisterschaften (1985 in Eskilstuna, 1986 in Oslo, 1987 in Trondheim, 1988 in Den Haag und 1989 in Göteborg). Dabei erreichte er im Jahr 1986 in Oslo mit dem zehnten Platz im Großen Vierkampf sein bestes Ergebnis.
Sein Debüt im Eisschnelllauf-Weltcup hatte Karlberg zu Beginn der Saison 1985/86 in Trondheim, wobei er den 23. Platz über 5000 m errang. Im weiteren Saisonverlauf erreichte er in Frösön mit dem dritten Platz über 5000 m seine erste Podestplatzierung im Weltcup und beendete die Saison auf dem sechsten Platz im Weltcup über 1500 m. In der Saison 1986/87 erreichte er mit acht Top-Zehn-Platzierungen, darunter Platz drei in Frösön über 5000 m, den achten Platz im Weltcup über 5000/10.000 m und den siebten Rang im Weltcup über 1500 m. In der folgenden Saison lief er im Weltcup achtmal unter den ersten Zehn, darunter Platz drei in Innsbruck über 5000 m und errang damit erneut den achten Platz im Weltcup über 5000/10.000 m und den siebten Rang im Weltcup über 1500 m. Beim Saisonhöhepunkt, den Olympischen Winterspielen 1988 in Calgary, belegte er den 30. Platz über 5000 m und den 12. Rang über 10.000 m. In der Saison 189/90 kam er in Skien mit dem dritten Platz über 1500 m letztmals im Weltcup aufs Podest und erreichte zum Saisonende mit zehn Top-Zehn-Ergebnissen den neunten Platz im Weltcup über 5000/10.000 m sowie den sechsten Rang im Weltcup über 1500 m. In der Saison 1991/92 absolvierte er in Davos seinen letzten Weltcup, welchen er auf dem 23. Platz über 5000 m beendete und startete bei den Olympischen Winterspielen 1992 in Albertville letztmals bei einem internationalen Wettbewerb. Dabei belegte er den 38. Platz über 500 m und den 26. Rang über 1500 m.
Erfolge
Olympische Spiele
1988 Calgary: 12. Platz 10.000 m, 30. Platz 5000 m