I work as an IT recruiter in the UK so hopefully I can help.

The key to success in any interview is preparation.
In the lead up to an interview it is imperative that you adequately research the company. I don't just mean reading the 'About Us' section on their website but detailed research. Look up previous press releases, media coverage etc. If you get an opportunity to talk to a past or present employee, regardless of whether they are in a similar role or not, take it.

Have a list of relevant questions prepared. Not questions you think may impress but questions that relate specifically to your role and questions based on the direction the company are heading always go down well.
One ridiculous mistake I see people make time and again is bringing in a copy of their CV to the interview and referring to it for dates or specifics, this basic error tends to leave people thinking that they shouldn't bring in any material to an interview which isn't entirely true.
I have had some outstanding feedback from various clients who were massively impressed with candidates who pulled out a concise, printed list of questions at the point of the interview where they asked them if they had any questions for them.

More and more companies (with the exception of Google) now acknowledge the fact that an important aspect of the interview is that it is an opportunity for the candidate to ensure that it is the right company for them.

If you go in to an interview thinking, I need this job, I need to impress then you will always be on the back foot.
Take a consultative approach to an interview and you will blow them away. What I mean by consultative is that you need to acknowledge the fact that the company is already confident that on paper you have the skills that they are looking for, otherwise they wouldn't waste their time seeing you. The reason they want to speak to you face to face is to ensure that you were being truthful about the claims you make on your CV and to ensure you have a likeable, professional personality and to ensure you have a genuine interest in joining their company.

Unfortunately 'personality fit' is a huge factor in the recruitment process these days. I say unfortunately as it is almost impossible to quantify so the advice I give my candidates is to be honest and be yourself, that way, if they feel that your personality doesn't align with what they look for in an employee you have just avoided joining a company where you would have to suppress your personality and conform to what they feel is acceptable. In my opinion this would be a nightmare over a long period of time.

I know I would have done well at most of the jobs where I didn't get through the interviews
At some point during an interview you will most likely be asked to point out some of your weaknesses. I would honestly recommend repeating the above quote from your original post verbatim.
Let them know that you strengths shine through when you get your head down and get stuck into the actual job but you sometimes struggle to communicate that during an interview without sounding clichéd. Everyone says 'I'm a hard worker with a great work ethic' but how many of them fulfil that claim on the job? You know you're a hard worker, you know that you can prove it if given the opportunity and at this point I would turn it around on them, ask them: How long does it take you to figure out if someone is as good at the job as they claim to be during the interview? Honest employers will say anywhere between 2 to 6 weeks. I would then point out that you are not interested in telling them what they want to hear but you only want to be honest and you know full well that you can do this job and you can do it really well and that will become immediately evident when they hire you.

Once again, be prepared. I know you struggle with this but if you really want the job, put time aside to make sure you are prepared.

Feel free to ask any other questions & I'll do my best to give you honest answers.

Good luck.