As I said in the other thread, I may have to just switch to using wait states and (begrudgingly) buy a bunch of oscillator cans
Changing the oscillator frequency is a good way to see how fast the computer itself can go (without the EEPROM). For that test you want a continuously variable clock. You'd test by starting up some sort of program, then you would manually increase the clock frequency little by little until the program crashes. During this test you could use either a trimpot-controlled oscillator (Garth & I each described one) or your idea of a digital potentiometer connected to an LTC6900 (which is a cool suggestion, BTW). Problem solved -- now we know how fast the computer (the CPU, decoding and memory) can run. Notice: for this testing, there's no need to change the frequency rapidly.
Next we move on to the goal of getting the EEPROM or other slow device working. And now we *do* need a way to change speed rapidly! Understand that, as a program executes, the CPU will issue a memory access every cycle, and the accesses are scrambled and unpredictable, including code fetches, zero-page, stack and I/O accesses, to name a few. Since these are accesses we don't want slowed down, the goal is to be ready for the occasional EEPROM access when it occurs, and only slow that access down. And there's no advance notice; the slowdown has to happen instantly (in less than one cycle).
A trimpot is too slow, and so is a digital potentiometer. You need logic that can extend the cycle during which the EEPROM is accessed, and it needs to happen automatically. Starting with the /CS from the slow device, you can use external logic to do that ("clock stretching") or you can use the RDY input, which uses internal CPU logic to accomplish basically the same thing. In other words, wait states. And in many cases a single wait state grants enough extra time, which means the circuit can be very simple indeed. (The circuit for two wait-states is also very simple.)
-- Jeff