In a nutshell, the sketch stops. I added a blinking led in the main loop to ensure it was actually stopped, and not just the sensor going into sleep mode.
I'm very much a beginner with the Arduino, so I'm not sure what more I can derive from this.
If I close and reopen the serial terminal, it all comes back to life, just as if I had pushed the reset button.
When I move the sensor away from my servos (its in a model glider), it seems to be a lot happier, and has been running for quite a while now. 
Are these sensors usually effected by magnetic fields or motor noise?
Here is the top few lines of comments from the library (for version information)
// I2Cdev library collection - MPU6050 I2C device class
// Based on InvenSense MPU-6050 register map document rev. 2.0, 5/19/2011 (RM-MPU-6000A-00)
// 8/24/2011 by Jeff Rowberg <jeff@rowberg.net>
// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib
//
// Changelog:
// ... - ongoing debug release
Here is my code, if that helps:
// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#include "Wire.h"
// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
// for both classes must be in the include path of your project
#include "I2Cdev.h"
#include "MPU6050.h"
// Servo lib
#include <Servo.h>
// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 accelgyro;
// Raw values from MPU6050
int16_t ax, ay, az;
int16_t gx, gy, gz;
// Raw values when at rest, and level
#define accXzero 0
#define accYzero 0
#define accZzero 2000
// Servo pin assignments
#define ROLL_SERVO_PIN 9
// Debug flashy LED
#define LED_PIN 13
bool blinkState = false;
Servo rollServo;
float rollServoPos = 80;
float filteredPitch = 0;
float filteredRoll = 0;
long time = millis();//Used to calculate delta time
long blinkTime = millis();//Used to track LED blinking during loop
void setup() {
// join I2C bus (I2Cdev library doesn't do this automatically)
Wire.begin();
// initialize serial communication
// (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
// it's really up to you depending on your project)
Serial.begin(38400);
// initialize device
Serial.println("Initializing I2C devices...");
accelgyro.initialize();
// verify connection
Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
// configure Arduino LED for
pinMode(LED_PIN, OUTPUT);
// configure servos
rollServo.attach(ROLL_SERVO_PIN);
}
void loop() {
// read raw accel/gyro measurements from device
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
//Use raw values to get pitch and roll
calcPitchRoll();
Serial.print(filteredPitch); Serial.print("\t");
Serial.print(filteredRoll); Serial.print("\t");
Serial.println();
// blink LED to indicate activity
if(millis() - blinkTime > 100) {
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);
blinkTime = millis();
}
// Adjust roll servo
int rollServoPos = map(filteredRoll,-90,90,179,0);
if(rollServoPos < 0) {rollServoPos = 0;}
if(rollServoPos > 179) {rollServoPos = 179;}
rollServo.write(rollServoPos);
delay(10);
}
/*
* Use the raw values from the MPU6050 to calculate
* and filter (Complementary Filter) the Pitch and Roll.
*/
void calcPitchRoll() {
//Update delta time
long timeNow = millis();
float dTime = (timeNow - time) / 1000;//Delta time in seconds
time = timeNow;//update time offset
//Get Degrees per second for gyros
//(250 deg/s is max, +-32768 range raw)
float xD = (float)gx * 250 / 32768;
float yD = (float)gy * 250 / 32768;
float zD = (float)gz * 250 / 32768;
//Get pitch and roll from the accelerometers
int accXval = ax - accXzero;
int accYval = ay - accYzero;
int accZval = az - accZzero;
float accPitch = atan2(accXval, accZval)*180/PI;//Pitch in degrees
float accRoll = atan2(accYval, accZval)*180/PI;//Roll in degrees
//Apply complementary filter
filteredPitch = (0.98f * (filteredPitch + yD*dTime)) - (0.02f * accPitch);//minus because the are opposing
filteredRoll = (0.98f * (filteredRoll + xD*dTime)) + (0.02f * accRoll);
}
Perhaps I've done something dumb? 