While detailed requirements are important as foundation for a good solution design, requirements can never be detailed enough. There are so many possibilities at every step of a design that it is almost impossible to look at requirements for all the design decisions. This is the biggest factors that makes software difficult.
One way of handling this is to start with the solution design once you reach to a comfortable level of detail, and keep the impact on requirements updated as you go on with the design decisions. The comfortable level has to consider the most severe constraints around the project – like budget, timelines, or the user profiles. However, the key here is to keep a track of how the requirements are refined or modified as the design continues.
The other way is an exercise to define the requirements to the nth level of detail which can result in a monumental task, that the requirements it documents turn obsolete.