I've been doing this type of thing, with questionable success, for a while now.
You can use xmms, with a web control plugin (xmmsd - search the xmms plugins), which will allow you to control xmms from anywhere.
Then you can stream your xmms to icecast using the live ice plugin. This is where I mean 'questionable success' because I think I had it working at some point, but I abandoned it in favour of another setup, which I'll get to shortly.
The oddcast-jack plugin, for xmms, which is available here:
appears to be successful, but my configuration needs esd, which jack doesn't support. If you aren't successful with liveice, try jack.
IIRC, the issue I had with liveice was determining the mount point for the stream's client....
What I use now, with great success (except that the songs' tags aren't streamed) is VLC.
It took some time getting the command line syntax to work the way I wanted it to, but, basically, I can now connect to my VLC stream anywhere, and control the stream (start, stop, next, etc) using both an http interface (sometimes difficult to access when the server is streaming, but that could just be a bandwidth issue on my end), and a telnet remote control interface (which I actually access by logging in using ssh first, and then telnet, since the telnet interface doesn't support username/password.)
The telnet interface also allows you to see which 'song' you're listening to, as well as the ability to query for more info, ie, bitrate, length....
I've posted my vlc command line config elsewhere, if you search my posts you'll be able to find it, and if you're interested in more help along these lines, you know where I am.
As to your concern about playing through your home speakers, both xmms, and vlc (which I run in the background, without a gui) can output locally to a null device (or, in vlc's case, it doesn't have to output locally at all.)