The DBZ movies are usually a little odd in terms of the overall continuity. They can usually be stretched to fit, but most don't fit very comfortably in the series as a whole (with the exception of History of Trunks, which is pure continuity) and end up between episodes, in odd parts in the series (like this one), or just don't make a lot of references to timeline.
That said, most of the movies have a "consensus" placement from the fan base, or at least enough to put it in the right location. For this movie, here's what the DBZ wiki has to say on the matter:
The movies' events occur during the Majin Buu Saga, roughly before the
Majin Buu conflict reaches its climax with the advent of Super Buu.
When Goku transforms into a Super Saiyan 3, he says the fight with
Majin Buu was the only time he had ever been pushed so far. This
suggests that the Majin Buu Saga happens within this film's
background. The fat Majin Buu is not seen anywhere, but if Kid Buu has
been defeated, then both Goku and Vegeta should be alive again. This,
along with the ability of Goten and Trunks to fuse as Super Saiyans,
suggest that Dragon Ball Z: Fusion Reborn is set around episode 253,
where Goten and Trunks successfully use the Fusion technique as Super
Saiyans for the first time. Additionally, Mr. Satan is not at Majin
Buu's house in the movie, which is consistent with the fact that he
left the Majin's house in episode 253 to get dog food for Bee. As
shown on Videl's watch, the movie takes place on a Saturday, the 16th;
which is 9 days after the 25th World Martial Arts Tournament (which
took place on May 7 of Age 774).
Basically, this movie is placed within the Buu saga, while Goku is dead, but after his SSJ3 transformation. As you can see, it "fits" in cannon, but very oddly (in my opinion).
So, why does Goku have a halo? Because he is, temporarily, dead. But he seems to be off and on dead throughout the series, and still manages to save the universe, so it shouldn't be that surprising.