Basically just loading the world results in the whole world being filled with weird block combos, shouldn't forge just delete all of the blocks which don't exist anymore or have their ids changed like vanilla does instead of filling and breaking the world with random blocks? Anyone know how I would go about doing this upgrade? I don't care about anything else except that modded biomes would transfer I don't care if blocks are lost in transition.
The game only deletes blocks and items if they do not correspond to a valid ID, otherwise it will simply treat them as whatever the new ID is (for example, my own mod for 1.6.4 adds blocks/items/biomes using IDs used by vanilla 1.7+, which will appear as such, including blocks with data values that do not exist in vanilla, which will appear as the default value (e.g. I added the 1.8 stones as variants of stone, vanilla will render them like normal stone while retaining their data values until placed or mined). One exception is biomes, which will default to Plains (example. Note that like metadata invalid biome data is not actually changed, which may cause issues with some mods).
As for converting modded worlds, this is generally considered to be impractical, especially if there are many modded blocks; you'd have to use a tool like MCEdit to replace every single block with its updated ID, possibly in two stages to avoid IDs that are in use (e.g. if you need to swap the IDs of two blocks you'll need to assign one to an intermediate ID not used so you don't end up with both having the same ID). Tile entities and entities are more problematic as their IDs and NBT may have also changed, you also have to pay attention to data values (MCEdit lets you find/replace blocks by ID and data value, you'll have to do as many as 16 replacements per block). MCEdit also has a filter that lets you change the biome in the case there are mismatches or you don't like the default plains biome color (this is also useful for changing Taiga (1.6) to Cold Taiga (1.7) so they remain snowy since for some reason Mojang decided to make them non-snowy instead of adding a snowless variant with a new ID).