A good chunk of the blame goes to Congress, which refused to provide the funding NASA requested.
Of course, Space-X's bid was just flat-out better than the others, as I understand it. More capable and cheaper. IIRC, Blue Origin was basically thrown out for not even meeting the requirements...