It could evolve through in-game events. For example, beat a key storyline boss/gym leader and you evolve. Beat a later storyline boss/gym leader and you get the final form.
Alternatively, you could turn Upgrade and Dubious Disc into use item that you get in storyline events, and later on (like, before Victory Road or its equivilent), can buy should you choose to breed Porygon. That way, the player can choose if and when to evolve.