Anyone with experience (or knowledge, Mitch ) will know that the more time you spend on upstream tasks will pay large dividends further into the product cycle.
I know there's no easily identifiable point when you know you've done enough analysis and design, but it's better to overspend in this area then suffer the consequences later.
It's amazing how just one extra class or one decision can save hours (or weeks!) of work.
You're never going to get it completely right, as the details are never immediately obvious. But that's no excuse not to try.
Right now, I'm doing a bit of swimming upstream...