I think it's mostly syntax, with the biggest issue being string handling. All strings in 3.x are a native Unicode type while in 2.x they are really just byte arrays. It would involve refactoring the code everywhere I use strings, which is all over the place. There are also a few modules like CSV that have some differences. I think all the external modules I use should have 3.x versions by now. I don't use anything truly obscure (just checked this, NetworkX, Pyside and Py2exe have 3.x versions so it should be fine).
To be honest, because I've never coded in 3.x I'm not familiar with the differences. I can only really guess from what I've read.
If you're up for it, you're welcome to have a go. A project like that would mean going through pretty much the whole code base so it would be a great way to get familiar with it. Also if anyone else is prepared to put any time into it, I'll happily throw my own time in as well. I'll even commit to doing all future development (if any, I have to say) in the 3.x branch.
Simon Hibbs