Jonny,
I haven't worked with the Python bindings. So I don't know if the syntax is correct or not.
Here's what you can try doing to get past your problem.
Since the XPath results in more than 1 elements (which am guessing all represent chat messages), you could perhaps keep track of the list of messages that were already retrieved by your system and then use it to figure out what is your new message i.e., something like this :
When you begin, and use this xPath, you perhaps have only 1 message. So you add up the chat message to a list. Now when you poll, you would get a new message. You check if the message already exists in your list and find out the new message using that. The flip side of this approach is that, if someone sends the same message again, then this logic goofs up.
The other approach I can think of is, check if the timestamp can be enabled in the chat window [ I never used the web client of skype ]. If its available then maybe you could rely on that as well.