I got the same bug, but I managed to hack my save file to fix the problem.
Warning: always copy a backup of your save file before hex editing it.
Searching through the save file using a hex editor, I looked for the ransom amount (180, in my case, which is B4 in hex). Deciding that the variables in the save file were little-endian 32 bit values (so the ransom appears as B4 00 00 00), I matched up the values in the save file with the variables in variables.txt assuming that the ransom value was the variable kidnapped_girl_ransom_amount. I noticed that the value 24 bytes earlier, which corresponded with the variable kidnapped_girl_quest_giver_town, had a value of 60 79 FE FF, which translates into -100000 in decimal.
So, as a stab in the dark, I copied the value from 8 bytes earlier than *that* (kidnapped_girl_quest_town) over the -100000, and then re-entered the town I was supposed to return her to. Voila, she says "thank you" and leaves! I then returned to the merchant who gave me the quest originally, and she thanked me and handed over my reward.
In my case, these values were around offset 0x780 in the save file, but I don't know if that's fixed between different saves (since the character's name, which is variable length, appears first in the file).
If it helps, I'll try to show a "before and after" hex dump:
1A 00 00 00 97 00 00 00 60 79 FE FF 28 00 00 00
00 00 00 00 01 00 00 00 00 00 00 00 DD 00 00 00
B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
kidnapped_girl_quest_town
kidnapped_girl_quest_giver_town
kidnapped_girl_ransom_amount
After editing, it looked like this (well, apart from the colour):
1A 00 00 00 97 00 00 00 1A 00 00 00 28 00 00 00
00 00 00 00 01 00 00 00 00 00 00 00 DD 00 00 00
B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HTH