I'm not sure if you have the space, but is it possible to arrange the desks so that the end of the long arm of the L's are together, then you would have a long surface in the centre for two programmers to sit side by side.
Since you already have offices to work with, I would see if there is a way to get most of your developers into shared offices. Generally, based upon my own personal experience I have found that working in an office tends to be helpful as they are a bit quieter than an open floor plan and since you see the person every day you get to know their strengths and weaknesses. It's hard to say how many people to an office, but generally you don't want too many people as it can cause stress - one person to an office is extremely nice, but not always possible. Two to an office seems to be the norm and it also seems to work well as long as they people in the office doesn't dislike each other.
In regards to desks - this is a bit subjective as there is a lot of personal taste involved - but having some shelf and draw space is nice to keep things neatly organized. From the looks of that picture there should be enough space for two people to work (only one person can really use the computer at a time) as long as it is something that they aren't doing for too long. This is where being the same office is nice as you can just turn back to your own workstation and toss some code on a thumbdrive to hand off.
I suggest you read Tom DeMarco and Timothy Lister's book "Peopleware", if you haven't already. In particular, Part II, "The Office Environment" talks about ways to layout an office to maximise developer productivity.
My office subscribes to the "cheap desks, good chairs" principle, we have offices with those "indestructible" folding tables, and nice aeron/ergo human chairs, and we are all in a large room and can roll to anyone else, and since everone has a big monitor not a stretch for pair programming.
I believe in a slightly different approach than most. What you want is a large-ish room with space for 4 to 6 developers. Each room will have it's own meeting space in the center that should be large enough to accomodate the entire team.
The addition of the meeting space to room serves to ensure that individual developer stations are far enough apart to provide more privacy than you would have from a traditional cube. This effect is augmented by the closed door on the room itself. Interruptions still happen, but now when they happen they're much more likely to actually be relevant.
The current (soon to be vacated) FogCreek offices that brien mentioned are probably the ultimate in office layouts for programmers.
Here's some pictures of a workspace at my former employer:
http://www.cornetdesign.com/images/carfax
Bill Wake has a write-up with various other team rooms:
http://xp123.com/xplor/room-gallery/index.shtml
Finally, there is a Flickr group on Agile Software Development which lays out some other spaces:
http://www.flickr.com/groups/agile/
Now, I've worked in both a private office environment as well as team rooms. I much prefer the team room environment when we are all working on similar tasks. If you are going to do a team room, it is vital to have a private space for people to be able to go to for things like phone calls, notes, or just recharging.
The IBM Santa Teresa Labs were actaully designed using prototyping and ( for the time) seem pretty good starting points.
These days we might want slightly less paper storage and less room for printouts.
http://researchweb.watson.ibm.com/journal/sj/171/ibmsj1701C.pdf