Red is the color of life (blood) and is usually perceived as being energizing. White is often associated with purity and innocence in Western cultures. A quick search on the psychology of color can be instructive.

From my own experience, I know that black cloth gets dusty and dirty pretty easily. White can get soiled, but it has to get really dirty before it start being perceived as something other than white (my car, for example, hasn't been washed for a few years but it's still undeniably white; my neighbor's black car has been washed more recently but looks decidedly grayish-brown from the crud). Solid primary colors also don't show dirt as much as black, either. That might be one explanation for the lack of black fields on flags that get handled and dragged through the mud.