Both T-splines and subdivision surfaces are capable of handling an arbitrary topology input mesh, whereas NURBS can only handle meshes with regular topology.
Complex NURBS objects are therefore made out of multiple regular meshes. These meshes are trimmed and fit together to form a single complex object. However, along the trimming lines of the mesh discontinuities can occur. This is because the boundary curve of a trimmed NURBS patch is not in general a NURBS curve. This complicates the joining of several NURBS patches, potentially sacrificing water tightness.
Subdivision surfaces are able to handle meshes with arbitrary topology. This means your mesh can contain extraordinary faces (faces with more or less than four sides) and extraordinary vertices (vertices with a valency other than 4). The generated surfaces are in general curvature continuous in regular regions and tangent plane continuous at extraordinary vertices. The evaluation of a subdivision surface is an iterative process. Although regular regions can be converted to B-spline patches problems occur when rendering the irregular regions as an infinite number of B-spline patches will be generated. The OpenSubDiv library by Pixar is a good start for speedy subdivision as it calculates many things on the GPU.
Most subdivision surfaces are based on uniform subdivision and some work has been done to handle non-uniform and rational subdivision, but it is quite extensive and has some limitations.
T-splines can do everything NURBS can do as well. The most striking feature of T-splines is the ability to handle T-junctions, as well as arbitrary topology, without sacrificing in surface continuity. This allows the designer to insert more detail in some places without it effecting the mesh in other regions. In this way it is possible for a very organic design process. Take for instance this video. A downside of T-splines is that it is a patented technology.