You basically can use any program that is able to edit .png files like Adobe Photoshop or something. As you requested free programs: use gimp, it is free and works aswell :>
To get the files to your phone i'd suggest a ssh-able ftp client like (for windows) WinSCP and for mac... well.. i have no mac so better ask a mac user
To make your own theme the easyest way is to edit existing pictures (you have the correct size etc). Backup the original ones (or the ones from a already made theme) and edit the ones you like to
For further information on using gimp or WinSCP i'd suggest google or one of the many graphics-forums. WinSCP is kinda self-explaining :>
Hope that helped :>