The method I would prefer is similar to an e-commerce site, where you apply multiple filters to refine the results.
Consider that in the beginning (before a single question has been asked), all the solutions in your database can fit.
Once you answer one question (I assume the answers are either "yes/no" or a small finite number), that narrows down the solution's list. Answer a few more and narrow it down still further.
Visually I envision it as two columns, one with the questions (and the possible answers, from which you select one per question) and the second with the possible solutions.
Benefits:
- You always have the solutions showing (and assuming a smart algorithm, you can also order them by relevance, probability, etc.)
- You could easily determine any preferred order for the questions, skip some and the get back to them
Back to the analogy, imagine you're buying a TV online and you can choose the desired screen size. In this model the question would be "what's your desired screen sized" and the various sizes would be your answers.
A different approach would be like troubleshooters in Windows - they make a suggestion or ask a question and then you can indicate whether this helped or not. According to this, they troubleshooter asks the next questions or suggests another fix.
The disadvantage is that if you skip a step you usually cannot return, you don't quite know where you are in the process (how many questions left) the results (the possible solutions) are suggested one by one.