Amarok didn't work for me. gstreamer-ffmpeg supposedly supports shn, but in my case, it gives up less than a second into a song.
Indeed, if you only needed FLAC support, there would be several options for gapless playback such as Aqualung and Music Player Daemon.
But for my gigs and gigs of SHNs, I eventually settled on XMMS w/ the Crossfade plugin. In addition to supporting audible crossfades, this plugin has a mode that just buffers tracks several seconds in advance (to avoid disk latency) and switches tracks without closing the audio device in between (to avoid pops from the audio hardware). For audio files that have leading or trailing silence, there's another option to trim that away.
I had problems with this plugin in the past, which may be related to the fact that it requires xmms itself to be patched. But under Ubuntu 7.04, it's great.
In the plugin configuration window, you need to go to the Crossfader tab and then:
Set parameters for: Automatic Songchange
Crossfade/Transition Type: None (gapless/off)
search wikipedia for "Gapless_playback" to find links to the above