Well, a lot of muzzle flash is also caused by unburned hydrogen coming out hot and igniting when it meets oxygen in the air. The role of flash hiders is to create a space that slows and cools expanding gases before they make full contact with the air, thus reducing combustion temperature and completeness.
Cellulose hexanitrate, the main form of nitrocellulose in smokeless powder, has what is called a negative oxygen balance of just over -24%, meaning there is a -24% shortage of enough oxygen in the molecule to combust all the hydrogen, carbon, and nitrogen it releases. So you still have some of those fuel molecules looking for a chance to find oxygen to burn them as they exit the muzzle. Hydrogen has the lowest ignition point, so if it is still hot enough, it is what burns first. Carbon has a higher ignition point in air and has a tendency to condense out on the cooler bore, which is part of why you get unburned carbon left over in the bore. 100% combustion wouldn't leave any carbon.
Nitroglycerin, on the other hand, has a positive oxygen balance of about 3½%, so it actually gives the nitrocellulose in a double-base powder a little oxygen help, but not enough to eliminate the majority of the unburned fuel gasses. Nonetheless, it provides a small but real increase in the energy that is extracted from the nitrocellulose, as well as providing its own energy, which is why double-base powders are often called "high energy" powders.
The bottom line is that you can get some flash whether the powder has burned out or not, particularly if the barrel is short. This was demonstrated to us during night firing at the Gunsite 270 basic rifle class. The difference in the flash from an 18" 308 bolt rifle barrel and from a 22" bolt rifle barrel using the same ammo and neither having a flash suppressor was dramatic. A big white fireball versus a much less voluminous yellow-orange flash. That difference is due to cooling as well as less burning powder remaining after going through the longer barrel.