Balancing selection means that two alleles are maintained in the population because of natural selection. You would expect that one allele will provide higher fitness than the other, and therefore would outcompete the other allele. When there is balancing selection this does not happen, because the fitness is depended on the allele frequencies of the alleles involved. If one allele starts to become more common, natural selection will favor individuals with the other allele.
The most common cause is heterozygote advantage. This means that the fitness of an individual with two different versions of the allele is higher than the fitness of an individual with two copies of one of the alleles. So in a system with alleles A and a, an individual with Aa has higher fitness than both AA and aa individuals. The heterozygote has the advantage over both homozygotes. This causes both alleles to stay in the population, irrespective of the fitness differences between AA and aa individuals.
Other causes of balancing selection are frequency-depended selection and selection in a fluctuating environment in which AA has advantage in one type of environment and aa in the other type of environment. An example of this is an area with alternating wet and dry seasons.
Usually systems with balancing selection will not persist over evolutionary time. All kinds of mechanisms have evolved to reduce balancing selection; e.g. selective expression of alleles depending on the type of environment (for balancing selection caused by fluctuating environments), introduction of a new allele that is favored more than the heterozygote (for balancing selection caused by heterozygote advantage) or even by doubling the allele onto the same chromosome in Aa state.