I've never used this technique for games, but I think it should work for biome generation.
If you have multiple layers of low res noise (such as perlin), and combine them to create a probability vector, describing what biome is the dominant for an area.
The most basic example for this, is just to associate each layer of noise with a certain biome type, such that the areas where the tropical noise layer has the highest value, the biome will be tropical.
To prevent a snow biome spawning next to a dessert, you can achieve a more sophisticated result by having the noise layers represent environmental properties, such that the biomes can be derived from these properties.
noise layer #1 "Temperature"
noise layer #2 "Humidity"
Temp < 33% and Humidity < 50% => Cold rocky biome
Temp < 33% and Humidity > 50% => Ice and frozen lakes
33% < Temp < 66% and Humidity < 50% => Grassland
33% < Temp < 66% and Humidity > 50% => Forest or swamp
Temp > 66% and Humidity < 50% => Dessert
Temp > 66% and Humidity > 50% => Tropical rainforest