Question: Developing in Android is going to be different for me, having spent the last 10 years coding games in C++. What's the main differences / pitfalls / bottlenecks to developing for the Android? My big worry is moving to Java, what am I going to miss most?

To be clearer: what would I miss if I coded the whole thing in Java compared to the way I normally code C++ for consoles?

Answer: 
The single biggest thing that you'd probably miss would be explicit memory management. On the plus side, Java has run-time type information and real generics.
Also see [this link](https://developer.android.com/topic/performance) for some tips from Google on how to keep your Java code efficient.

Raymond Chen has recently been venting about garbage collection and memory management in the CLR and his blog posts are great for understanding how it works. (I know the following links are for the CLR, but they're still relevant for Java development).
See especially [here](https://devblogs.microsoft.com/oldnewthing/20100809-00/?p=13203) and
[here](https://devblogs.microsoft.com/oldnewthing/20100810-01/?p=13183).

That being said, there isn't that much difference between Java and C++, and as Chris pointed out, you *can* code in C/C++ on Android using the NDK.
Google's Chris Pruett talked about writing real-time games for android in Google I/O [2009](http://code.google.com/events/io/2009/sessions/WritingRealTimeGamesAndroid.html) and again in [2010](http://code.google.com/events/io/2010/sessions/writing-real-time-games-android.html). He talks about Java performance on Android among other topics. He also made a game, [Replica Island](http://replicaisland.net/), in Java and you can download the [source code](http://code.google.com/p/replicaisland/) to get an idea of how an Android Java game might look like. His [blog](http://replicaisland.blogspot.com/) about the game also has several insightful articles.

The typical pitfalls are similar to those of writing in other [garbage collected languages](https://gamedev.stackexchange.com/questions/7/what-are-typical-pitfalls-when-writing-games-with-a-managed-language-like-c), you use a object pools and allocate stuff in advance to avoid having the GC run when you don't want it to. Methods are virtual by default in Java and it helps to mark them as final when you don't need to override them. The Android Eclipse plugin comes with some neat tools to help you profile your application and monitor heap allocations.