Clojure, 93 92 bytes
#(do(print"Loading... -")(doseq[c(cycle"\\|/-")](print(str"\b"c))(flush)(Thread/sleep 250)))
Basically the Haskell answer (I swear I didn't cheat!).
It must be run in a console. IDE REPL'sIDE's REPL (Intellij) just prints a garbage character in place of the "\b"
.
And it's late, and I've never even created a GIF before, so I'm going to have to pass on that part.