The network finds, in average, 1 block every 10 minutes (and it's often less because the difficulty only resets every 2 weeks).
A block should be found, in average, after 600 of your shares. So that's pretty much 1 share per second to announce to all the miners !
Incorrect - this assumes a *single* p2pool represents all of bitcoin's hash network, rather than only a small fraction of the total hash power. If p2pool becomes popular enough, it can be split into multiple sub-pools.
Also, you claim it to be mostly decentralized at the moment, yet you handle the payouts. How do you ensure the generated shares only give the 50 BTC to you ? (Ie, a malicious miner that finds a "winning" share could keep it for himself and take the 50 BTC). That needs an explanation in my opinion.
Only the payouts that balance risk from short blocks to long blocks are managed centrally; the rest of the payouts are fully distributed. A malicious miner finding a winning share would have computed it already with the pool's payout proportions in mind; otherwise, his/her earlier shares would have been rejected by the other miners in the pool and would have no credit with them in the event that they found the block instead; therefore, malicious mining is equivalent to solo mining.
About the first point : okay, I didn't consider that. This pool is still not very scalable though (even if it represents 10% of the network, that's 1 share every 10 seconds).
About the second point : seems complicated. How about simply putting the 599 previous shares in every found share, and when one is a "winner", pay all the previous 599 shares ? Regardless whether they are from a previous block or not. This is much simpler, allows complete decentralization and still pool-hop resistant.