Well, aside from making your own 360 degree engine, I'd say using paths is your best option. It won't look the most authentic, but not everyone's an expert programer with great knowledge in trig and engine programming and that doesn't mean they can't make their own images.
Anyway, to start off, you'll draw a diagram. Construct a small level segment including the loop you'll use and a small flat segment to either side. Next put red squares to the left and right outside the loop to signify where you would start and end the loop. Then mark 6 dots: one at the start of the loop, 4 on the top/left/bottom/right of the loop, and one at the end of the loop. Note: the dot at the start/end should be half-a-sonic off the ground but the dots in the loop should be close to the loop. The diagram should look like this:
Next make a path in game maker using the 6 dots you marked as the coordinates in this order: start->bottom->right->top->left->botton->end. Note how you did bottom twice. Don't forget to turn of "Closed" and check "Smooth Curves."
Now create the loop object and two different red objects, one for the start and one for the end and put it in the level like in the diagram. In the Sonic collides with the start box, make him start the path if he's going right, in the collides with end, make him start if he's going left, and in the path end event, make his xspeed normal, so he continues moving:
collision with start_box event:
if( xspeed>0 )
{
path_start(loop_path,5,0,0);
path_position = 0;
xspeed = 0;
}
collision with end_box:
if(xspeed<0)
{
path_start(loop_path,-5,0,0);
path_position = 1;
xspeed = 0;
}
End of Path event (in Other catagory):
xspeed = path_speed;
After that, just test it out and tweek the path until it looks good.
As for animation, you should adjust the angle based on the path position, but it's probably just easier to draw the rolling sprite that doesn't rotate.
Also, to make it slightly more authentic, you can set the speed (in the path) to, say, 75 on the right and left and 50 at the top.