Data from BMA180 accelerometer into arduino is sporadic
I2C is a bi-directional data bus.  You appear to be using a uni-directional level translator (likely http://www.sparkfun.com/products/8745) wired such that it can only pass data from the low voltage side to the high voltage one, and not the reverse.  This will prevent you from sending commands to the Accelerometer to request data, so you would only see anything if it decided to produce data on its own.  (EDIT: apparently the convert is at least somewhat bi-directional)

Further, you must tie the VIO high.  By leaving it floating you are probably letting noise trigger the chip somehow to occasionally produce data.

Also note that I2C requires pullup resistors.

Switching to SPI might be an option as in that case each pin would be un-directional, however you need to drive 3 outputs from the 5v to 3.3v side (/CS, SCK, MOSI) and your existing translator only supports 2.  You could build something for the third from discretes.

If you left CS and SDO unconnected you might be able to operate the chip in stand alone mode where it would reliably produce data by itself, but then you would have to make the program capable of catching the data whenever it appears, perhaps by using an interrupt (or a polling loop if you can guarantee nothing else is going on).

Here is a tutorial on modifying the Arduino itself to run on 3.3v, thus eliminating the level conversion problem:  http://www.adafruit.com/blog/2011/04/19/tutorial-tuesday-converting-an-arduino-to-3-3v/