If, in an image, there is no region which is neutral white, grey or black, how to set white balance?
You can mimick auto white balance using Photoshop's Average Blur filter in a duplicate throw-away layer. This will determine the overall color cast in the image. Then add a curves adjustment layer, use the gray point eye dropper and click on your average blur layer, which will turn it to grey. In other words the curves layer will neutralize that color cast. Then remove the average blur layer, and the curves layer will make that same adjustment on your overall image.
This is basically what your auto white balance does in camera. Samples all the light coming in and adjusts.
If your image is a close up of skin (red) or a forest (green), then the light should have a red or green cast to it, so this technique may overdo the adjustment (so may your auto white balance). If so adjust the opacity of the curves adjustment. It will at least point you in the direction of removing the dominant color in the image.
So the steps again are:
duplicate your layer in Photoshop
in the top layer, Filter > Blur > Average
add a curves adjustment layer
use gray point dropper, select the color in the average blur layer
delete the average blur layer
adjust opacity of curves layer
If you really need accurate white balance (as you mentioned in a comment), you might want to invest in some tools to help you do that. A proper gray card, and probably even a color checker card (such as the X-Rite ColorChecker), should really be used in the first shot with a given lighting setup to help you calibrate all the following photos (also for that same lighting setup) in post. Its important to note that you will need to create a calibration shot for each and every lighting setup you have, because they are only valid for one specific lighting case at a time. If you are using warm lighting for one set of shots, and cool lighting for another set of shots, both sets should have their own calibration shot with a gray card and color checker card.
You would then import the calibration shot, use the eyedropper to set WB, and possibly figure out what other fine-tuning curves adjustments are necessary to produce accurate reproductions of all of the colors in the color checker card. You would need a digital version of the color checker card on-hand for matching, or at least the color checker card on hand for rough visual approximations. Once you have a calibration shot properly calibrated, you would then apply the same whitepoint/curves do each of the other shots in the same set. That should get you the most accurate color possible if thats what you need.
If you are not interested in keeping color accuracy as high as possible as well, but need accurate white balance, a gray card in and of itself should do. Same deal, take a calibration shot of the gray card for each lighting setup (which could be natural as well, i.e. direct sunlight vs. shade), calibrate the calibration shot in post, and apply those changes to each of the other shots in a set.
Ideally, you should shoot with a gray card on your first shot in a particular lighting and then simply set all the rest of the series to match.
Other than that, many programs (Lightroom for example) have presets for certain lighting types that should get you close. Just select the type of lighting that is present in the picture.