You might want to combine Geiser with Quack[1] for best result with Scheme. Also, I think it's worth a shot to have a look at the fairly new Racket-mode[2] written by Greg[3]. Geiser + Quack are rather old and for Scheme in general, Racket-mode focuses on and is tightly integrated with Racket.
racket-mode is good in that it at least indents Racket code properly. It implements it's own integration with the REPL, IIRC, which makes working with Geiser at the same time not ideal. But still manageable, just a bit of tweaking needed. Disclaimer: I may remember wrong or it may have changed since I was last configuring Racket support in Emacs, so don't get discouraged and just go check racket-mode anyway :)
[1] http://www.neilvandyke.org/quack/ [2] https://github.com/greghendershott/racket-mode [3] http://www.greghendershott.com/