The simplest way to look at the progress of a running gzip process is to simply look at the file size of the written file, potentially in combination with watch if you want real time updates. If you are dealing with partitions that is of course not easily possible.
An alternative to estimate the progress is to use iotop. iotop will show you the speed at which data is written to the disk by every process on the system, your gzip process will likely show up on top and give you the amount of data processed per second. Then simply multiply the MB/sec with how long the process has been running (see ps auxw START column) and you will get a rough idea how long it will take.
As for further backup runs: Use rsync when you want to copy data from one computer on a network to another. rsync handles compression and deltas, thus you only have to transfer the data that you don't already have, which makes it very fast for regular updates. rsync also has the --backup and --backup-dir options that can be used to create not just copies, but proper backups that keep track of deleted files.
And when doing diskimages partimage is a good alternative to dd, as unlike dd partimage is file system aware and will only copy blocks actually used by the file system, not empty unused blocks, it is thus able to create much smaller disk images on mostly empty file systems. But it's not a good tool for backup over a network either, use rsync instead.