Halvarsson gewann bei den Junioreneuropameisterschaften 1979 in Achenkirch die Bronzemedaille im Slalom. Die ersten Punkte in einem Weltcuprennen holte er am 10. März 1980 als Zehnter des Slaloms von Cortina d’Ampezzo. Im selben Jahr gewann er den schwedischen Riesenslalom-Meistertitel. In den zwei folgenden Wintern fuhr er im Weltcup je zwei Mal unter die besten 15, während er beim Slalomrennen der Weltmeisterschaften 1982 ausschied. In der Saison 1982/83 gelangen ihm sechs Platzierungen unter den besten 15, darunter ein sechster Platz in Kranjska Gora.
Seine erfolgreichste Saison hatte Halvarsson im Winter 1983/84. Zweimal realisierte er eine Podestplatzierung im Slalom, am 6. März 1984 in Vail und am 18. März 1984 in Åre. Bei den Olympischen Winterspielen 1984 in Sarajevo klassierte er sich im Slalom als Achter und erhielt ein olympisches Diplom. Wenig später gewann er die schwedische Slalom-Meisterschaft.
In den zwei darauf folgenden Wintern konnte sich Halvarsson jeweils zweimal knapp unter den besten zehn platzieren. Im Winter 1986/87 blieben zählbare Ergebnisse ganz aus. Bei den Olympischen Winterspielen 1988 schied er im Slalom aus, am 20. März 1988 erzielte er als Fünfter der Kombination von Åre sein letztes Top-10-Ergebnis. Ende der Saison 1988/89 trat er vom Spitzensport zurück.