IMU (ADXL345 & ITG3200). Triple Axis Filter
Assuming that the conversion of the algorithms you used was correct, I would suggest the Kalman filter. However, the issue you are going to face is that the .NET Micro framework will not run the cycles fast enough to fuse the sensor data and prevent drift or provide stable results; this will be especially true once you put the other runtime code on the processor. You might squeeze 20-30hz out of the processing loop if it is exclusively fusing the data.

Arduino is not running managed code and is optimized by the compiler giving it the extra edge needed to make a semi functional copter as you can see on youtube. Still not stable enough for practical use though IMO.

In order to have an effective IMU and killer end product, you'll need to process the fusing algorithm with a separate processor running non-managed code.

If you still want to go down the road of using a .NET micro based copter for the core flight control (which I am doing myself), take a look at the new Invensense MPU-6000 which does the sensor fusion onboard and effectively offloads the calculations from your managed core processor. 

http://invensense.com/mems/gyro/mpu6000.html