To answer a few questions from the OP:
For example, garbage collection of non-pinned blocks is disabled by default
Its not disabled by default for performance reasons, we have this enabled on all the ipfs.io gateways. It's disabled by default due to the possibility of it triggering while users are in the middle of working with some ipfs objects that they havent pinned yet. We will be setting this to be on by default when we have something like a journaled blockstore that will allow users to not worry about blocks they are working with randomly getting garbage collected.
And there are various forum posts complaining about incredibly slow IPNS operations
Yeah, we're working on this. We have an IPNS publisher and resolver that uses pubsub for all of its operations: https://github.com/ipfs/go-ipfs/pull/4047 Its not finished yet, but anyone who wants to help push that forward should go try it out, review the code, comment, ask questions, etc.
The initial use case we are targeting is very basic
I would love to hear more about the usecase, knowing more usecases helps us to more effectively direct our work.
The only thing I would like to see is some indication how and when a part of the money from the filecoin ICO is going to be used to make the core features of IPFS rock solid and fast. IPFS, IPNS and later pubsub is all we need.
Two things right off the bat are hiring, and setting up security audits of the codebase. Making IPNS fast and pubsub resilient are high priorities too, its hard work, but expect to see significant improvements there in the next several months.
I think its also worth mentioning a few of our new active committers, @Magik6k @stebalien and @vyzo have been doing an awesome job pushing things forward and really making a noticeable difference in the performance of ipfs. The upcoming 0.4.11 release is noticeably better on many fronts.
Anyways, Let me know if you have any other specific questions or if I have missed anything.