i am rubbish at hills too (well, going up at least). But I have improved this summer by mainly only riding hills. This was purely because I'd been entered for the Bruno 200 by a friend - 200 miles, 2 days, 18000ft ascent over the days.
my technique is something along the lines of:
gather as much momentum as possible
as soon as it starts feeling difficult start flicking through the gears until there are none left to go at (and you're in 39/32)
keep legs going at a steady, constant rate until you eventually get to the top.
if I get to a stage where I really am out of puff, then I'll stop, take a half dozen big breaths and then start again. Over this year I've got to a stage where I can cycle up 10k at 9% or 3k at 17% without too much bother (though it takes me a short while to get my breath back at the top!).