The quantum circuit model describes a quantum computer as a closed quantum system and assumes that there is a system which executes the circuit but is completely isolated from the rest of the universe. In the real world, however, there are no known mechanisms for truly isolating a quantum system from its environment. Real quantum systems are open quantum systems. Open quantum systems couple to their environment and destroy the quantum information in the system through decoherence. When examining the simple evolution of a single quantum system this system-environment coupling appears to cause errors on the quantum system’s evolution (which wouldn't be unitary in this case).
A coin has two states, and makes a good bit but a poor qubit because it cannot remain in superposition of
tail for very long as it is a classical object. A single nuclear spin can be a very good qubit, because superposition of being aligned with or against an external magnetic field can last for a long time, even days. But it can be difficult to build a quantum computer from nuclear spins because their coupling is so small that it is hard to measure the orientation of a single nuclei. The observation that the constraints are opposing in general: a quantum computer has to be well isolated in order to retain its quantum properties, but at the same time its qubits have to be accessible so that they can be manipulated to perform computation and read out the results. A realistic implementation must strike a balance between these constraints.
The first step towards solving the decoherence problem was taken in 1995 when
Shor and Steane independently discovered a quantum analogue of classical
error correcting codes. Shor discovered that by encoding quantum information,
this information could become more resistant to interaction with its environment. Following this discovery a rigorous theory of quantum error correction was developed. Many different quantum error correcting codes were discovered and this further led to a theory of fault-tolerant quantum computation. Fully fault-tolerant quantum computation describes methods for dealing with system-environment coupling as well as dealing with faulty control of the quantum computer.
Of particular significance was the discovery of the threshold theorem for fault-tolerant quantum computation. The threshold theorem states that if the decoherence interactions are of a certain form and are weaker than the controlling interactions by a certain ratio, quantum computation to any desired precision can be achieved. The threshold theorem for fault-tolerance thus declares a final solution to the question of whether there are theoretical limits to the construction of robust quantum computers.
Reference: Decoherence, Control, and Symmetry in Quantum Computers - D. Bacon