The pywallet method definitively works, i had this same issue a while back with one tx and used it without other alternative. You will have to remove the transaction from wallet.dat, which is a database that stores this kind of info, manually. Make sure you have a backup copy of your wallet before doing any of this.
Like others have said in this thread, get yourself
pywallet by downloading the zip and unpack it somewhere accessible on your main windows drive (for ex. c:\pywallet).
1.
Open up a terminal window by running "cmd" and make sure you have python interpreter installed by running "python" in the console window.
2. If you get an "unknown command" error, download and install python
here then optionally add it
to your path.
3. You will have to install some python libraries like bsddb and twisted to have it work correctly. Download setuptools 0.6 from
here.
4. After installing it run this in your terminal:
X:\Python27\Scripts\easy_install bsddb3
X:\Python27\Scripts\easy_install twisted
where X: is the drive where your python installation is located.
5. Now comes the fun part, run the following command by replacing X: with the correct drive letter in both places:
X:\Python27\python X:\pywallet\pywallet.py --web
If it doesn't give you an error don't close the terminal, just minimize it and open up your usual web browser at this address
http://localhost:8989, which is the pywallet web interface page that it serves locally, on port 8989 by default.
6. The next step is to find out the id of the troubling transaction. Just fire up your bitcoin wallet and when it finishes go to "Transactions" tab and double click the unconfirmed tx, you should see it's id down on the list. Copy it and shut down your bitcoin wallet, completely, or else pywallet would not be able to work with the wallet safely.
7. Now go to your browser on the pywallet's page and paste your tx id in "Delete a key from your wallet" section and hit "Delete" without changing anything else. You should see a success message right away.
8. Start your bitcoin wallet normally and check if the transaction has been deleted, so now you can resend it again but make sure you include some fees so it gets confirmed right away. Hope this helps.
EDIT: Added twisted and bsddb libs install.