In case anyone comes looking, I've built something recently that did exactly this.
I built three versions, all of which work, but have different constraints in terms of what you're connecting to people.
1)Passive version
One person has a wire attached to them. This is attached directly to the analog pin of the arduino.
If you repeatedly read from the analog pin of the arduino, you will get a pretty random value (basically the person is being a big antenna). However, the amount this value varies is pretty constant. So, I do analogRead 20 times, calculate the variance (you know, the obvious way, using your school maths). This stays constant while someone is not touching anyone else.
The moment they touch someone else, the antenna is one heck of a lot bigger, and the variance increases drastically.
2)Semi-active version
Both people have wires attached to them, person 1 is from analog pin of arduino, person 2 from ground of the arduino. The variance of an analogRead is repeatedly sampled. If the people aren't touching, the value shifts around, as before, and a high variance is shown. When people do touch, the circuit is grounded, and the value goes down to 0.
3)Active version
Both people have wires attached to them, person 1 from analog pin of arduino, person 2 from digital output pin. On the digital output pin, I output a square wave, in sync with my measurements of the analog pin. This way, when people touch, the variance is really high (as it is recording 0...1024...0...1024.) I use the pullup resistor to output the square wave, to limit current, don't know if it really changes much, but I felt more comfortable putting it through the person's body with it.
Because of the active signal being used, the top and bottom values of variance are pretty constant, so this version is I think most accurate.
The measurement loop looks roughly like this:
for(int n=0;n<20;n+=2)
{
pinMode(outpin,INPUT);
digitalWrite(outpin,HIGH); // square wave HIGH (through pull up resistor)
delay(2); // let things settle + don't run analogReads too close together
dataVal[n] = analogRead(inPin);
pinMode(outpin,OUTPUT);
digitalWrite(outpin,LOW);//square wave LOW (as output)
delay(2); // let things settle + don't run analogReads too close together
dataVal[n+1] = analogRead(inPin);
}
// calculate variance of the data values here