Neat, but not very practical/useful unless you are very constrained by memory and need a doubly linked list that you will always traverse starting at one end (much like stream ciphers, you can't just jump to the middle, since the next/prev pointer depends on the last one, which depends on the one before that, all the way back to the first)
This was the second or third thing we learned in a basic data structures course; not so much for the utility of the list but to become familiar with the application of XOR to pointer arithmetic.
That professor (his name was Jorge Orejel) was probably the best I've had. He was a hardass but really taught the fundamentals well. The 3 classes I took from him had something like 80% attrition because the lazy people gave up.
Though I do love the XOR operator, and this just adds one more reason why (like the XOR swap trick http://en.wikipedia.org/wiki/XOR_swap_algorithm or XOR's extensive use in cryptography).