First, best of luck in your endeavors and your dreams of trying something new. My advice about your "6 points"

"1) Throw myself at an open source project and/or build stuff (I have a few Ruby gem ideas but aren't a 100% confident in my implementation skills) and build a Github profile that passes for a resume."

First of all, Github is a portfolio, not a resume. Theres a lot of contention around this, and some people do believe Github is a substitution for a resume, but I personally don't.

As for not being 100% confident, believe me that not every success starts out seeming like it will be one. You might create a gem that is good enough, gains a following, and attracts contributors who end up re-writing it nearly 100% - And that isn't a bad thing. If you have ideas for gems that you think are better than whats out there, or fill a niche that needs to be filled, give it a shot.

"2) Apply for junior Java positions (because they all seem to be Java) around the UK, in the hope that I'll get accepted to one - then move to something more interesting after getting experience there 3) Just go ahead and apply for positions working with dynamic/functional languages doing stuff that actually sounds cool, even if they ask for experience - but would anyone really give me a second look?"

I would GUESS that you'd have an easier time finding junior positions with a Java shop than with some place using a more functional language, but that is a guess. Since you lack a lot of experience, any place that takes you on is going to need to expect to have a period of training where you're mentored and tutored a bit - not only on the language(s) used, but also their style and methodology. You should seek out those kinds of places, that offer a way to mentor and train, and understand you probably wont "hit the ground running"

"4) Get a foot in the door freelancing on places like rentacoder and try and build a portfolio from that to help me get a fulltime job."

I'd be wary of offering your services for pay if you aren't confident you can deliver. You mention you have some Ruby, C++ and Haskell experience, but haven't said exactly how much. You should look at some of the jobs offered on those places for those languages and give yourself an honest assessment - Could I do this job in that timeframe? If you think so, give it a shot. But if not, you could just damage your reputation.

"5) Actually try and start a startup myself - I have ideas and savings, but I'm scared I'll waste six months building something nobody wants."

Welcome to the world of programming :) You need to take that jump and waste the 6 months, or else you definitely won't have anything anybody wants. There is always the risk that you'll work your ass off for nothing, but thats part of the game. Look at it like a gamble - a lottery. Or, like one of your underground chinese gambling rings, haha.

6) - Never stop learning. Go out of your way to find things you don't know about, and learn them. Don't see the world as full of nails, and you holding the worlds best hammer. Languages and platforms are tools. Some are hammers, some are screwdrivers, some are measuring tape, some are glue, some are grease. Learn to see where things fit, and if you feel like the tool you're using isn't the right one, go out and find a better one if you can.

Like I said, best of luck. I hope you do well out there