Bitcoin can never substitute for traditional fiat currency.
It was designed for different purpose and can hardly fit requirements put forward to fiat currency. If anything, there should be some new Cryptocurrency that will fit society needs and it will not be Bitcoin.
And what do you think that fiat has that bitcoin doesn't have and that is going to be impossible for bitcoin to get? Because the only problem that I see bitcoin having is that it is very slow compared to cash and that it cannot deal with a huge amount of transactions but as we know the developers are working very hard on solving those issues and will eventually solve them.