Yahoo is pretty good provided you create your own station. It takes awhile to build up enough preferences, etc, and, at first, you get quite a few songs that you choose "never make me listen to this song again". But, eventually you get the songs you like best played quite often, plus new songs by your favorite artists, plus some semi-random songs based on the songs you've already included on your station.
They have a fair assortment of small label, non-mainstream artists, but not great (much better than you can find on the local radio stations here in Colorado Springs). Not nearly as good as Napster used to be, where if you had downloaded a few songs from the same person, you could decide it might just be worth browsing his directory and trying a few artists you'd never heard of with a pretty good chance you'd like them.