I wouldn't lay the blame on NASA. Congress ultimately decides what NASA does and does not do.
Constellation was the system that was supposed to succeed the Shuttle. It had one successful first-stage launch in October 2009. In 2010, Constellation was cancelled by Congress (at the behest of then-president Obama). In its stead, Congress essentially designed a new rocket called the Space Launch System, and tasked NASA with building it. Constellation's crewed capsule, Orion, survived as the SLS's crewed capsule. Unfortunately, the SLS is now 5 years overdue for its first launch. (It currently seems reasonably likely to launch for the first time in 2022.)
The Orion capsule could conceivably service Hubble [1], especially after lots of launches and general experience with the vehicle. If Constellation had not been cancelled, or if Congress had tasked NASA with a less-ambitious rocket to build, (or if the contractors that NASA was obliged to use to build the SLS had been able to keep to the original schedule,) we might have had a spacecraft to service Hubble right now.
[1] https://www.thespacereview.com/article/3965/1