The basic solution might be to "disconnect" the hardware from the input paradigm. Your device would be a portable computer that you can plug into different input devices: a phone, a tablet, or a docking station with screen and keyboard at home. The OS switches between input paradigms (switches! Not provide a shitty one-size-fits-all solution, like Metro) based on what input device you are using. If it's implemented properly[1], it would be highly modular, so you could decide what sorts of input paradigms you want to have installed, and have different "Input Environments" (sort of like a Desktop Environment, but specific to an input paradigm) or roll your own using components (just like creating your own DE with a WM and additional programs)[1].
With innovative goodies such as the Raspberry Pi demonstrating that you can have pretty usable (as in hardware-specs) general-purpose computer the size of a credit card (and things are only going to get smaller in the future), I don't think this is a far-fetched vision.
[1] In case you haven't guessed it already, this requires a free (as in speech) computing environment, not shitty, locked-down pseudo-computers like many (most?) smartphones and tablets these days.
We're already well on the road to disconnecting it in an even more fundamental sense. Our computing is moving to "the cloud", and our local systems are turning into windows into this cloud.
The backend is already being disconnected from the UI used to manipulate it.
With innovative goodies such as the Raspberry Pi demonstrating that you can have pretty usable (as in hardware-specs) general-purpose computer the size of a credit card (and things are only going to get smaller in the future), I don't think this is a far-fetched vision.
[1] In case you haven't guessed it already, this requires a free (as in speech) computing environment, not shitty, locked-down pseudo-computers like many (most?) smartphones and tablets these days.