Found the problem....
It wasnt the code at all. pretty much every routine posted here works fine - theres no problems with them.
The problem was the .tga file. It was saved as 24 bit. Once I saved it as 32 bit, all the pixel_to_bmap() calls wrote pixels to the bmap just fine.
I guess the pixel manipulation commands just dont work on 24 bit maps?
(@wdlmaster & @MrGuest: Both of your routines worked perfectly - *until* I tried using them on a 24 bit bmap. once i converted to 24 bit, both routines displayed the same problem - not writing pixels to the bitmap.)