The method of separation of variables is introduced in every textbook on mathematical physics.
A basic question is rarely addressed: does this method exhaust all the solutions?
Is there any fundamental theorem available for answering this question? At least for some kinds of equation?
What do you mean exactly by "exhaust all the solutions"? If you mean: "Are there solutions to the equation that cannot be separated?" then the answer is yes. It's a tool for solving problems by constraining the form of possible solutions. By adding this constraint you're helping yourself solve the problem in some cases by ruling out other solutions, but that doesn't make those solutions impossible.
If instead you mean: "Can you construct all solutions by combining the solutions found from separation of variables in various ways?" then you're asking a more difficult question. In general the answer is no. For instance, in the 1-D case of Schrodinger's equation, you can use separation of variables to get a set of solutions and then use linear combinations of those solutions to construct any solution if you force the potential to not depend on time. So all of those solutions to Schrodinger's equation are separable. But there are, of course, cases where the potential does change with time and you will not in general be able to use your previous solutions to construct a solution that satisfies the equation.
Put another way, it's like the adage: all dimes are coins, but not all coins are dimes. All separable solutions are solutions, but not all solutions are separable. There are surely cases where separable solutions can be shown to span all of the possible solutions, but that is not always the case.