I don't believe you can do it by sub.
If you don't do partial invoicing, a workflow to hide the Invoice button until SO status is "Pending Billing" would be pretty easy.
It would get trickier if you do partial invoicing because then you'd have to look at line items, which generally workflows aren't good at. You'd probably need a script at that point.