Anecdotally I've seen two primary reasons posed for not running a node:
1) For enthusiasts who want to altruistically run a node at home, it's usually a bandwidth / quality of service problem. There are tools to help work around this, but most users aren't sysadmins and would prefer a simple configuration option in bitcoind and a slider / selector in the QT client to throttle the total bandwidth usage. This issue has been open for years:
https://github.com/bitcoin/bitcoin/issues/273 - if you want to make it easier for enthusiasts to run nodes, I'd start there.
2) For businesses, it's not so much an issue with the resources of installing / running / maintaining a node, it's an issue with the lack of indexing options offered by bitcoind. Thus the business will also need to run their own indexing solution - an out-of-the-box solution such as Insight or Toshi might work, but for more custom indexing you have to roll your own software - this is where it actually becomes expensive.
Depending upon the query volume / latency needs of the business, it may not make sense to bother administering bitcoind instances, the indexing software, and its databases - using a third party API will probably be more efficient.
- Jameson