The problem as I see it is bitcoin has a scaling limit, like transactions per second, which it can support in full p2p bearer form. It can be scaled but only at the cost of reducing its decentralization. eg if block sizes go to 1GB, that counts me out of running a full node. Its an issue because if you can only be a full node, with an OC3 line, most people will be pool mining without validating what they're mining, and then defacto control remains unavoidably central. These will grow into large companies, be acquired etc. And then become defacto policy points and they'd just as well sign contracts and stop mining. OK so committed transactions can till prevent policy by making transactions opaque to miners, but it is not quite ideal itelf.
I haven't thought this through completely, but what if we had some sort of hybrid Bitcoin proof-of-work and Ripple-style consensus system, whereby miners could query multiple full nodes which are known to be "unlikely to collude to defraud us" to check validity?