Ok... I messed around with M codes and couldn't find one that pauses the print for us... but... of course we can manually start a filament change. So all we need is the chance to do so at the right time.
What seems to work well is... Play the Ta-Da song (print finished sound)... then add a bunch of moves to the gcode during which you do a filament change.
Here's what I did.... (Using Makerware 2.2.2.89 and a Replicator 1)
A layer before the filament change I add a line with the ta-da song (That's P1, P2 = a warning sound, P0 = error sound), the tada song seems to stand out more (good if I'm in the next room)
M72 P1 ( Ta-Da )
Then at the moment I want the filament change, presumably at the end of a layer I add this chunk.. (explanation below it)
; GO AND SWITCH HERE!
M72 P1 ( Ta-Da )
; First lets move away!
G1 X7.287 Y9.114 Z10.000 F1500.000 A69.331; Move up and retract
G1 X-112.000 Y-73.000 Z5.000 F1500.000 A69.331; Move to start position
G1 X-112.000 Y73.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-73.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-72.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-71.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-70.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-69.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-68.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-67.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-66.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-65.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-64.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-63.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-62.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-61.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-60.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-59.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-58.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-57.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-56.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-55.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-54.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-53.000 Z5.000 F1500.000 A69.331; Move on Y
G1 X-112.000 Y-52.000 Z5.000 F1500.000 A69.331; Move on Y
So... Where it says move up and retract (first G1 line), that's a copy of the last line of the previous layer. That way it has the right X and Y coordinates and A value. It is just there to move away vertically from the print... so the Z has to be higher than at the end of the last layer (but not too high for your printer). The A value on that line I set to the same as the start of the next layer (approximately -1.3), so that it retracts. This A value I copy to all the next added lines so basically it doesn't do anything with the filament (though of course some leaks out).
Then I add the line from the very start of the gcode file (move to the start position), except I change the Z to the one on the previous line (otherwise it would move the platform up, and it may interfere with the print). And swap out the A for the one on the previous line as well. Then copy this line twice and set opposing maximum/minimum Y positions... So this is a long move to the back and back to the front... I set the F (speed) to 500 so it takes a while... This is the move during which you use the menu to initiate the filament change!
The rest of the lines are all small moves... The reason they are there is because when you initiate filament change the Replicator finishes it's qued moves... so we need enough moves in here for the filament change to happen somewhere in there,and before it goes to continue on the next layer (I think the que is 10 moves, but I added some more to be sure). You see all I changed was the Y value by 1, and kept F at 1500... they don't take long... they are just there to fill the que
If you need longer to start the change just add more lines with big moves, or lower the F value....
Of course the trick is to change before the last layer cools too much or the plastic won't stick nicely!