Indeed. There was a complex powerplay. For one NASA received no money to develop a new system until after the Shuttle was decomissioned.
Then there was the Constellation program that had a manned launch vehicle that was mandated to serve the ISS among other goals. Congress basically dictated the design. Particularly that the manned vehicle would be derived from the Spaceshuttle solid boosters, the Ares I. Behind that support for solid booster manufacturing. The military loves solid boosters. The capsule, the Orion had to be very heavy, it needed to be so heavy that no available booster can lift it, to justify development of Ares I. Unfortunately it turned out they could not build Ares I strong enough to lift Orion either.
That led to Obama canceling the Constellation program. That caused another power struggle between NASA and Congress. NASA insisted on 2 providers, Congress wanted just one provider. Any provider, as long as its name begins with B and ends with g, B....g. NASA contracted Boeing and SpaceX but for 5 years Congress cut the funding needed in half, and was then VERY surprised that this caused delays. In the end Congress finally agreed to fully fund the program. With the not publicly stated requirement that Boeing would launch first. So NASA kept delaying SpaceX until now they no longer have contracts for flying on Soyuz and Boeing is still not ready. SpaceX is ready to fly but lacks stamps of approval from NASA.
There was the incident that a SpaceX Dragon capsule blew up on a test, which does cause delays. But NASA had delayed the timeline leading up to that test by at least half a year. So except for the delays SpaceX could be flying crew by now if NASA only let them.
BTW the US GAO, the Government (Accounting) Accountability Office, blames NASA for much of the delays. At least as much as the providers. For one the contract timelines were based on the assumption that reports by the Contractors are processed by NASA within 2 month, but NASA takes 6 months or more.