Seth, please try my tree  https://github.com/mdomsch/s3cmd/tree/bug/175 which is upstream master plus this one patch:

commit d370008bbf45d801de6d7769170620170729b39c
Author: Matt Domsch <Matt_Domsch@dell.com>
Date:   Fri May 24 20:59:15 2013 -0500

    s3cmd get to stdout: set file_exists to avoid traceback, bug #175

    Reported by Seth Noble.

    Set file_exists so we don't try to delete sys.stdout if getting the
    file happens to fail.

diff --git a/s3cmd b/s3cmd
index 041fd5c..e2b765c 100755
--- a/s3cmd
+++ b/s3cmd
@@ -446,6 +446,7 @@ def cmd_object_get(args):
         if destination == "-":
             ## stdout
             dst_stream = sys.__stdout__
+            file_exists = True
         else:
             ## File
             try:



Thanks,
Matt