You might be able to delete just the bad image from the archive by listing the contents and then deleting the last item selectively:
zip -sf badzip.zip zip -d badzip.zip badfile.jpg
If listing doesn't work (because of the corruption) but you know which image is corrupted, you could try opening the archive in a text editor. TextWrangler will show you the file list. From there you can delete the contents of the corrupted file and try extracting.