I think this is the bridge between waterfall and agile that deserves more attention. Use agile methodologies to build a prototype (or multiple small prototypes). Figure out what works, what doesn't work, and what you'd do differently if you were starting from scratch.
And then start from scratch.
With the experience you've obtained you'll know what you're building, and have your waterfall specs.