As archaeologists have learned more about the Canaanites and their religion, the reasons for their loss of the land become more and more apparent. Like Israel, the longer they existed to rebel against and defy God, the more vile and abhorrent their sins. The sacrifice of children and other humans was a highpoint of the Canaanite religion. And unfortunately, this carried over into Israel as well (Judg. 11; 2 Kings 21), as they did not destroy the Canaanite religion the way God asked them to do (Judg. 1-2). In addition, worship at the temples involved having sex and even orgies with the temple priestesses. This also carried over into Israel (see Num. 25 and the cult prostitutes mentioned often by the prophets). It was not just about worshipping other gods; the punishment against the Canaanites was due to their evil and wicked practices. And yet, God accepted any individuals who repented, though the nations as a whole were destroyed.
Although God’s original plan was to do any killing Himself, sometimes Israel had to defend themselves against attack, carry out capital punishment, or took things into their own hands, and God had to work with their lack of trust in His delivering power. But in all these wars and battles, even the ones that were not ideal, God made clear that this was not normal war. Israel was not supposed to have a standing army, but to rely on God for rescue. They were also not to take any of the plunder, but to dedicate it to God, seen clearly by the punishment against Achan, who kept some for himself. These wars were not really about Israel, but more about the punishment of the Canaanites for their sins, just as the exile was for Israel four hundred years later.
One of the most difficult parts to understand of this transition of power from Canaan to Israel is the seeming indifference toward women and children who were at least somewhat innocent, but were to be destroyed (see Josh. 6). However, it is significant to note that the three cities that were utterly destroyed (Jericho, Ai, and Hazor) were actually military forts at that time, and probably had few if any women and children living there. Rahab was an innkeeper who lived with her family and was saved with them, and it was common for the innkeepers to live in between the walls of the military forts, to serve travelers coming through. So, most of the people who died in these cities would have been soldiers, not civilians. In addition, the rest of the Bible mentions many of the Hittites, Amalekites, and other non-Israelites who were still alive, hinting that any destruction language was probably hyperbolic and symbolic (other nations at that time used the same language), not intended to be indicative of genocide (even at the end of the conquest, in Josh. 23, Joshua himself notes that Canaanites still live there!).