Backing up / restoring a 20GB database with images stored as binary code
Instead of using SQL Server SMO code to do a backup of the database, use the T-SQL BACKUP DATABASE command by connecting to the source SQL Server instance using either SQL Server Management Studio (free download) or sqlcmd.exe.  Use the optional WITH COMPRESSION parameter to ensure SQL Server compresses the backup, and use the INIT option to ensure the target backup file only contains a single backup.  

Once you have the database backup completed, use 7Zip or WinRAR to compress the backup file even further.  Send the file to your host using a reliable FTP program, or preferably SecureFTP or SSH, ensuring you set the session to allow binary transfers prior to sending the file.  Do not even attempt to restore the database if the FTP transfer does not complete, since SQL Server will not be able to read the backup file.

Once you have the zip/rar file copied to your host, uncompress it using your compression utility of choice, then run RESTORE VERIFYONLY to ensure the target SQL Server can read the entire backup.  If that completes, run a RESTORE DATABASE command to actually restore the database onto the target SQL Server.