Several potential issues that lead me to believe the answer is no:
- not 100% but pretty sure public sites user cannot authenticate via OAuth (you can't "sign in" as guest in other, more traditional ways - it's a magic user). Even if they can, you'd want to validate that the Streaming API is available to the guest profile (which I doubt). Could not find any documentation on either of these points but I'd be surprised if you could do either of them.
- so assuming that's true, your option would be secure authentication as someone other than Guest.
- if you were able to bake an authentication token into client-side JS code for someone other than Guest, it would be a potential security hole.
- it would also likely violate Force.com Sites terms and conditions, since they would technically be authenticated users at that point and you would be sharing them among all public users.
- even if you could do these things securely and legally, you'd be severely limited by the Streaming API limits. The PM team claims they will raise those limits on request, but out of the box it is a ridiculously low 20 clients for EE, 100 for UE, 10 for other. I would not want to be subject to Salesforce raising my limits now but being free at any time in the future to lock them back down on a whim or try to charge me. This is a fatal flaw in how Streaming API was deployed, IMO. The limits should be much higher than polling mechanisms, since they should be so much more efficient. But they're not.
You can accomplish almost as good as Streaming with an AJAX polling mechanism to a public VF page serving some basic REST-type/JSON/XML data service. It's less efficient and a little more laggish, and will hit your API/request quota, but for now it is a better option IMO than the Streaming API.