This should be a multi-faceted approach. For one, organize your client files in some logical manner. We used a system similar to what MikePro indicated. We had a single folder called "Projects" and then under that we created a folder for every company/client. Within each client folder we placed the job files. Another layer that we started to use, but didn't fully implement, was to create another sub-folder based on a Job ID or Job Name to further organize within each client (if they were a repeat client).
Next, you should consider some sort of software to manage your estimates/invoices. Of course, I will offer a shameless plug for GraphixCALC Pro as it offers some very powerful features to help you in this endeavor. For one, it creates a Job ID for each job in your workflow based on the date that can then be referred to at any time in the future. It assists you in pricing your jobs and collects all information about the job (i.e. materials, types, etc and further allows you to enter user-defined data such as colors and the like). It offers several pricing methods depending on how you like to approach pricing your jobs. It is a true relational database where all data is linked.
To complete the picture, consider a complete accounting tool, such as QuickBooks that provides a complete financial picture for your business. Fortunately, GraphixCALC integrates with QuickBooks, allow you to sync Estimates, Invoices and Clients.