Uh, level scripts are out of the picture here XD And as for the routine, I don't thinking hacking the keypress routine is a good idea. Anyway, here's my idea... Who know's you might see one in Pure Gold too
Part 1 - We hack the sprite loading routine and load a extra sprite... But not just anywhere

This sprite should be the last, as Map overworlds might overwrite this. Then, we hack a routine that's executed a lot. What this routine does, is:
1) Check for a flag - A flag must be set meaning that the sprite can follow the player.
2) Check the party - To see if the overworld (Pikachu, or what so ever) is in the party.
3) Other checks - whether Pikachu has evolved or not and so on...
Should any of these previous checks fail then the sprite does not appear and follow the player. But once the conditions are fulfilled, the routine will take the player's position and calculate it for the overworld, so it'll be following it.