I don't think there is an event that works cross-browser for all situations. So the "poor man's solution" is to poll the text field every second or so. In fact, such a test can be performed pretty quickly, and if you don't use it on lots of text fields at once, you should be fine.
You can use my little example code if you like (it works on a plain GWT TextBox, but it should be straightforward to adapt for an Ext-GWT TextField)
@Override
public void onModuleLoad() {
final TextBox textBox = new TextBox();
final int delayMilliseconds = 1000;
Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
private String previousValue = "";
@Override
public boolean execute() {
final String newValue = textBox.getValue();
if (!previousValue.equals(newValue)) {
try {
valueChanged();
} finally {
previousValue = newValue;
}
}
return true;
}
private void valueChanged() {
// React on the change
Window.alert("Value changed");
}
}, delayMilliseconds);
RootPanel.get().add(textBox);
}