I feel I must mention my experiences here. I know you guys got it working, but just in case some google search turns this up, this may help someone.
I had my i810 driver-based Intel 915GM laptop working with dual head and xinerama (but not with DRI at the same time) before, but after some upgrades it no longer worked. This is because X.org has completely changed things, and your xorg.conf should be completely different. New intel driver, new settings, everything.
Basically, with Debian at least, an upgrade will keep your same xorg.conf even if the software changes and needs a completely different setup. Well, since x.org has completely changed, and I would recommend starting anew.
I backed up my xorg.conf file, and ran:
dpkg-reconfigure -phigh xserver-xorg
It will save your existing xorg.conf if you did not. But this will start you with a new xorg.conf after asking a few basic questions. Other distributions should have a basic way to redo this file.
Thing to note is that a lot of the xorg stuff isn't needed any more. Mine is so simple now, simpler than it has been in years. The entire "files" section is gone, no longer needed, as is the modules/plugins section whatever it was. There is only one monitor section (even though I have two), and it is only two lines. Resolution and timing information is read on the fly and calculated by X, you don't need to set it manually. If you ever may randomly connect a monitor, I would recommend doing it this way. (On a laptop, you never know when you may have to connect to a projector). No worries about if the monitor will work or not, so long as it isn't ancient, a monitor has EDID information about what its size and preferred refresh and supported resolutions are. Using xrandr you can see most of this, also the info is in your X logs.
The ServerLayout now is simple, no information on how the screen works there. The *ONE* line you have to add to get multi head working is to the subsection "Display" under "Screen":
Code:
Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"
Monitor "Generic Monitor"
DefaultDepth 24
SubSection "Display"
Modes "1280x1024" "1280x800"
Virtual 2048 2048
EndSubSection
EndSection
Notice that there no longer are dozens of resolution and color modes. I added "1280x800" to that, uncertain if that even really matters. This sets the maximum space for x to be a 2048x2048 square, which your screens will then use. (It should be as small as you think you will need. I may hook this into a 1920x1200 screen somewhere, so I just set this to the max.) Then using the xrandr tool you set what you need. Note that you no longer need to use the "i810" driver. Intel has released a good open source driver that supports everyone, so the "intel" driver works and works better now for cards going back to the i830. 915GM users now better off using "intel" driver.
The one thing is that for the 915GM at least, I have a 1280x800 laptop and an external 1280x1024 LCD on VGA. Width wise, that would be 2560 together. This is greater than 2048 width we set with the 2048x2048 Virtual setting, the maximum resolution supported for using xrandr/multihead and DRI at the same time. In order to use both together, I tell xrandr to put my external monitor "below" the laptop, even though it is physically to the right. So it is a bit odd. But it works. Multihead, and DRI, Compiz Fusion, "Xinerama"-like window dragging (xinerama itself isn't being used any more), all working together. If you don't use DRI and want the screens to properly be side by side, you can do it. (Virtual 2560 1024) I think the limitation for this is in hardware, not the driver or Linux related. The old i810 driver could not do Xinerama and DRI at the same time either. At least now it is possible. The syntax for the command is simple:
xrandr --output LVDS --auto --output VGA --auto --below LVDS
That I run after I start. If you don't want to type this every time, you should be able to put it in your .xinitrc file. I just put it into /etc/X11/xinit/xinitrc global file so that all users can see it. But I haven't restarted x yet (rare occurrence) to see if it works there (I don't know if global xinitrc runs as the user or as root, I'll see). The only thing here of course is that when I remove the monitor, or when I restart the laptop without it, it may still make a second screen that I can't see. Or not, maybe it is smart enough not to use it with the --auto flag. I'll find out.
I am hoping that this is a stepping stone to making multi monitors a breeze. It seems like such a challenge. I have not tried on a mac (I bet it is simple), but it definitely sucks on the few Windows laptops (how often does a projector not work with someone at a meeting or in a classroom?). Once fully realized, I bet we will have daemons that constantly appropriate the screen. Imagine plugging a monitor in, and your desktop extends to it. Turn it off, and the windows that were on it move onto your remaining screen. Plug in a projector, and bam it works and you can drag whatever program to it to use it. I think this will happen soon and it is exciting to see X progress as it is.
Hope some of this info/opinion helps.