Software people talk all the time about "minimum viable product", and after working on MeTal for nearly a year, albeit on and off, I see what they mean. Sometimes you have no idea where to draw the line and declare the product shippable, because you can always think of just one more thing that needs to be in there.
The more practice you have at drawing that line, the easier it gets. At this point I've had to decide enough times about whether a feature should be shipped now vs. whether it should be shipped later that it's become far easier to decide how much work needs to be performed on a given thing before I consider it closed for the current milestone.
For instance, I don't need to have a whole lot of functionality for things like blog categories, but permissions and user attributes need to be pretty thoroughly fleshed out. The former can be minimal for now, but the latter has a lot more resting on top of it, so to speak, and needs to be as baked as it can be.
If I'd had my druthers, I would have started on the test suite as early as possible, but I wasn't confident I knew how to build something like that for a project like this. (I'm still not confident I know how.) I decided instead to create something functional and dogfood the hell out of it in lieu of that. In the long run, I know that isn't viable, but I did have to start somewhere.