I'm unsure on the best stack to build a chat application. Currently I'm thinking of two main options:
The chat app will need to have the following:
Both options seem scalable so that's not really my worry (we're thinking of running the app in amazon's ec2 as well). I know there's a project that builds a xmpp server using tornado but it's not ready for production use and our deadline isn't that big. Basically my main worry is ease of development vs somehow regretting later using pubsubhubbub to develop a chat app but I read somewhere that PubSubHubbub might eventually replace XMPP as REST replaced SOAP - so what do you think?
Go for XMPP.
Out of the box, ejabberd has support for all your requirements. You won't need to see any erlang and write custom modules for ejabberd. And with Strophejs, XMPP in the browser (which is what you are apparently doing) is great.
For your last question about pubsubhubbub replacing XMPP, don't count on it. XMPP is over 10years old, solid open source and proprietary interoperable implementations both on client and server, and is elegant so it won't go away.
And you are developping a chat application which is what XMPP was made for.