I recommend the iHome iHM60 Rechargeable Mini Speaker. It's $20, compact, has a pretty good rechargeable battery, and the sounds is surprisingly good. The only downside I have come across is that it uses a 3.5mm to mini USB cord, so replacing it could be a hassle if you lose or damage it.