I've only skimmed the thread; I'm just going to mention what I did, since I did pretty well on the project and didn't really feel like I put that much effort in. I will say I'd consider my programming ability / experience to be way above the standard required for A-level though.
Anyway, some background on my project: My proposal was for a 2D platforming game where mathematical equations would be a manipulatable part of the environment, which could be used for destroying enemies and problem solving. I asked my mathematics teacher and he agreed to sign off interviews etc regarding the project. The program I actually produced was a "game engine" (not complete) and an "equation engine" (which mostly worked). It was the second project I'd started on (and my third idea, maybe fourth - I didn't begin any coding on my first concept, and I don't know if the second one was actually given any serious consideration).
The features of the game were that it would run at the same speed regardless of framerate, it had support for loading images and sprites as well as storing multiple levels in-memory, it had input mapping support (albeit no way for the user to actually customise input settings), and it had a character with a basic animation who you could move left/right and who would bounce up and down. Nothing really special there, although I did have a nice set of classes in place to start building up game structure. That came to some 350+ lines of fairly spaced code, including a fairly-trivial-but-lengthy library to hold vectors which had a bunch of deprecated code that I wasn't actually using any more.
The features for the equation engine (it was really more of a function engine) included holding mathematical functions, differentiating them, graphing them in text form (lines made out of x's, etc, although without any actual axes or labels), and estimating the integral between values using the trapezium rule. It used a nice set of classes, but was not user-accessible; you could only make use of the library if you were writing python code. It came to about 500 lines, and I finished the main backbone of it within a fairly short time of deciding to start this project. This was what I wrote both my user guide and technical manual about, both aimed at other programmers. I think I sort of cheated there. :P
My project came to something stupid like 120 pages (although that's not as bad as the 200+ page horror stories you hear) and got 78/80. For what it's worth, one of my friends came in with far less programming experience than me - it is quite likelyit was none at all, although I can't remember for sure - and got 80/80 over something like 175 pages, although he did put in a lot of work and was way more focused than me in class (and thus finished earlier too).
Choosing a graphics library
My project was written in Python, with PyGame (a games library, as you may have guessed) handling things like input and graphics rendering. I'd say this did a lot of the "heavy lifting"; I didn't have to do anything low-level like manually blitting pixels from one array to another, I just used the sprite.copy() method, or whatever it was. Likewise, input events could be gotten from a simple method too. It's been a while since I did games dev things in Java, but I remember doing some stuff like sprite blitting manually in LWJGL (although this may well have been down to my desire to build my own engine more than anything)? I'd say this is definitely overkill for A-level unless both a) you know what you're doing so it's not actually going to be difficult for you and b) you can't think of any ideas that are sufficiently complex so you just want easy complexity marks.
I've never touched libGDX but I doubt it does much more heavy lifting than PyGame does. If you're comfortable with it then go for it (is that a disappointing conclusion after six paragraphs of preamble? sorry ^^).
Deciding on a project
I'm going to say something that may seem counterintuitive: if you feel like you're a strong programmer, go for whatever. If you can make really solid code and approach something in a more elegant way than simply trying to go and brute force things, you can easily write a good chunk of code that's easily at top level complexity for A-level. My code didn't really actually do anything, and I'm pretty sure I still got 100% on the code section - I did a tiny amount of my initial planned featureset but that didn't matter because my code looked fancy so it seemed like I knew what I was doing (which I think I did! I hope!).
On the other hand, if you're not so confident, try and come up with a more complex feature set. Without being able to just sort of handwave your way to top marks, trying to go for something really tricky will put you in top complexity marks and thus let you get 100% on the code anyway (and make it easier to complete your writeup without having to resort to pages and pages of complete utter worthless waffle).
By this point, you may well have even completed your code. If so, nice! I'd suggest you still revisit it unless you're completely 110% happy with it, for a couple of reasons. First off, refactoring some of your code and documenting that shows the examiner that you're trying to improve your code - you could even say you were responding to feedback or something to pick up more marks in those sections. Refactoring could also help you pull out advanced-seeming methods which you could write up nicely in structured English and pseudocode to get more free marks in your write-up. Also, you can treat commenting as more documentation; if you're a comfortable coder you probably didn't comment too much on your first run through, but I feel for coursework it's nice to hand-hold a bit to stay on the safe side (although don't go mad and think you need to comment every line).
If you need more room for complexity (e.g. if your teacher doesn't think your code is worth 100% of the marks yet) there are also a couple of things I could suggest from your intiial post: if you're comfortable with the maths then you could try 3D SUVAT (you can waffle about this and I think that it would ramp you up to maximum complexity straight away in any place that you did). Also you say "millions of if/case statements" - millions of if/case statements are often not necessary. Of course it may well be good enough for all of the marks at A-level, but if you want to feel more comfortable about getting 100% of the code marks then you could try and fancy it up a little bit - if you can rewrite it in a more elegant way that is more adaptable or even just seems more complex then you can ramp yourself up to maximum complexity there too. Again if you feel okay about the code you could do this anyway then use it as "ammunition" to pick up more marks in your writeup.
I realize this writeup may be excessive and largely useless, but if you happen to need any pointers then hit me up. :L