This question comes from an inquirer on the Net. She writes, "In Genesis 9.3 God tells Noah he can eat any animal. Then in Leviticus 11 [and Deuteronomy 14] God tells Moses the people can't eat any animal, but only selected ones. Finally, in Acts 11 God tells Peter he can eat any animal. Why the contradictions?"
I think here is a case in which an apparent contradiction in the Bible actually isn't a contradiction at all. Instead, what we have here are different commands for different times. The notion that God is unchangeable may well be true, though we read a number of times where God's mind is changed. However, humanity changes, society changes, and even culture changes. And God interacts with each differently.
In the Genesis passage, God tells Noah that he may eat the animals and animal. According to the biblical story to this point in the Bible, humanity has been forbidden to eat any flesh. Indeed, back in Genesis 1.29-30 both animals and humans were ideally meant (commanded) to be vegetarians. However, after the flood, for whatever reason, God lifts the prohibition against eating flesh and tells Noah and his family that they may eat of any animal.
The story continues. Years pass and God decides to raise up Israel as the chosen nation and Moses is chosen to be the leader. With the rise of the nation comes also the institution of the religious cult of Israel (remember, cult refers to the practice of a religion; it does not indicate evil, paganism, or heresy). Moses gives the law to the people of Israel. The laws were given for two purposes: (1) to insure just treatment between people; (2) to set apart/sanctify the people for their religious practices. Many of the laws, including the dietary commands of Lev. 11 and Deut. 14, did just that it insured that the people of Israel were set apart, or made holy. These laws had to do with purity and holiness. For instance, one could not be considered pure if they had a physical defect. Again, one was not holy when they had touched a corpse and not completed the ritual for becoming "pure" again. The kosher food laws were commanded of the Israelites in the name of holiness.
Leviticus 18-26 contains what scholars call the holiness code. It was written by the priesthood during the Temple period, and is likely one of the oldest writings in the Old Testament. The code itself essentially codified the societal "norms" of that day. Later, other norms, including the kosher laws, were added to supplement the holiness codes at a later time. And again, the dietary laws reflected what had become "normal" for the society. Just as it is unseemly (perhaps even unholy) to eat dog in our culture, so it was to eat fish without scales in ancient Israel. And so it went with the other animals those deemed unfit to eat by the priesthood were prohibited (most likely already reflected by the culture itself). Interestingly, many of the animals on the prohibition list are socially unacceptable to eat in our own. Most of us would turn our noses up at rock badger and camel as well as vultures and sea gulls.
But what happened when Peter had his vision in Acts 11? By his day the basic tenets of the faith were expanded to include those of other cultures. No longer was the good news thought to be essentially for only those of Israelite blood. Rather, those of all races and cultures were to be included. And so, the law was changed. No longer was one bound to the holiness ideals to be considered "holy" by God. One wasn't holy because of the rituals performed, but by the motivation of the heart. And so, foods eaten had little or nothing to do with being holy. Instead, how you treated your neighbor and how you demonstrated God's love became the primary indicators of holiness.
And so, rather than a contradiction of laws regarding dietary purity, we have a progression, an evolution if you will, of the laws to accommodate the cultures to whom the laws apply. In other words, the laws were changed because society changed and it seems that God was behind it all.