Well, I am thinking from the bang for back perspective.
There are basically two approaches:-
1. Write a full client that uses SlimProto (basically a TCP level client) to pull direct commands from LMS and the streaming audio, and hand this off to XBMC's audio player. This will be a significant amount of work I think....especially things like sync, which are non trivial. You'd have to co-ordinate, down to the millisecond, the xbmc audio player's timing with the timing of other syned players in the group. On all XBMC platforms ideally. I suspect this would be way hard, and binary add on support isn't even in place yet really.
2. The second approach is to leverage an existing infrastructure to do this - squeezeslave works on linux, windows and os-x already, and unlike other options for streaming from LMS, already supports sync etc. It's pretty full featured (it can even mimic an Slimp3 type display right on the command line!).
I don't see the point in duplicating all this work again - of course ultimately, that would be nice, but if you start off with a general SB controller (rather than a player) in XBMC - you can then easily point it at your other SBs, but also the local squeezeslave, and very quickly get some local audio playback going and, and some visualisation too.
I had a very simple python script doing this from XBMC last night in about 10 mins work
... I triggered the squeezeslave connect from python and in the LMS interface told it to sync to the other players and wa la, away it went. Pretty quick effective demo.
If you want to write a slimproto handler, that would be awesome, but it's beyond my skills/time to do right now, and I think a controller add on running over a locally installed squeezeslave would be very useful and a more effective way of starting, at least. Ultimately whichever way you go, there will likely be a controller part of the add on, for control and visualisation, and a player add on that either hands off to XBMC or plays directly to audio sinks.
And no, right now, without that PCM patch (I would think that would go in after Eden as ctspiff has said he'll take charge after that), you can't currently hand the stream to XBMC as I understand it. So for now, that approach is right out...so the best place to start is with a python controller to Squeezeboxes to can also point to a locally running squeezeslave...also, the xbmc music support (playlist management, etc) is primitive at best at the moment, so a really nice add on (not saying I have time for this, but I will try!) - could offer an 'ipeng' or Moose like experience but wrapped up into XBMC...
I have not yet got squeezeslave in OE going, I have not even tried, but it doesn't look that hard from the thread on it, basically export the LD_LIB_PATH and run it, maybe making sure the xbmc will share alsa as well....but I develop on my crummy window laptop so that's where I started.
All that said, if you just want to connect to server, play music, then surely just waiting and then using uPnP/DLNA once that patch in place will be the easiest for sure. But that won't sync - see http://wiki.slimdevices.com/index.php/Sy...ronization
...given the amount of potential buffering involved etc, it's not even sure that in all scenarios squeezeplay will support sync but you can bet they've put more effort into it than will be easily done via xbmc.