I never did get XGG to work properly with p2pool, memory usage went crazy, so if anyone has any hints/fixes - I'd like to make it 12........
The trick is to ensure XGG (GeistGeld) has a decently high difficulty before deploying p2pool.
When I was almost the only miner mining it, and certainly the only one mining it with enough hashing power to keep up a reasonable difficulty, its difficulty would collapse whenever my p2pool or daemon or miners had problems, because it adjusts/adapts its difficulty very swiftly.
p2pool would choke up, exhausting connection port data structures in the operating system or something like that, from constantly trying to open new connectinos to the daemon while hundreds or thousands of other such attempts were still waiting to time-out.
So what I had to do then was comment out XGG from my p2pool and direct some individual mining machines at it, such as a 50GHash Butterfly Labs miner or two for example, to drive its difficulty back up into the hundreds. Somewhere in the low hundreds or so of difficulty it would be difficulty enough that I could add it back into p2pool, BUT, NOTE THAT in those days I had no Neptune mining machines, just a Jupiter, so my p2pool was only running at somehing over 500GHashes (the Jupiter and some of the Butterfly Labs things and a whack of the early model USB miners).
I have not been able to use my Neptune miners with p2pool because no matter how few coins I merged in the p2pool I found I could only get about one terahash out of a Neptune that normally (e.g. with mmpool.org pool) gave me 3.4 terahashes.
Basically you need GeistGeld's difficulty to be high enough that however much hashpower you have in your instance of p2pool is not going to "instamine" it, it needs to be high enoguh that it will take your p2pool some seconds per block, so there is time to complete connections between blocks.
-MarkM-