1. A method of writing a cell of a non-volatile memory to a final programmed state, the method comprising: writing a first cell of the memory from an initial state to a first intermediate programmed state using only a first programming mechanism; and subsequently writing the first cell from the first intermediate state to a final programmed state using only a second programming mechanism, wherein the first cell has a charge storage region over a channel formed between a source region and a drain region and a control gate formed over the charge storage region; wherein the first programming mechanism differs from the second programming mechanism in that, during a programming operation, one of the programming mechanisms biases the source and drain regions to have no current flowing therebetween and applies a voltage to the control gate induce tunneling of charge to the charge storage region and the other of the programming mechanisms biases the source and drain regions to have a current flowing therebetween and a voltage is applied to the control gate to induce hot electron injection into the charge storage region, and wherein the cells of the non-volatile memory are multi-level cells that store data in a multi-page format and the first intermediate programmed state corresponds to data from a lower data page and final programmed state includes data corresponding to an upper data page.