You do have the board type set correctly, right? It should match the bootloader you've burnt. All the jumpers are in the right places? The S3V3 board has a lot of jumpers...
Turn on "upload.verbose" by editing your preferences file. This should give a bit more information.
you can try removing the AVR from the socket, putting a jumper in between digital pin 0 and 1 (rx/tx) on the digital headers, and talking to the board with the "serial monitor" function of the arduino IDE. This creates what is know in the comm industry as a "digital loopback" scenario; anything you type in the serial monitor should echo back, with associated blinking of the rx/tx LEDs. If you see no or partial echoing of your typeing even though both LEDs are blinking, then something is eating characters that should be going to the arduino... (note that this will work regardless of incorrect speed/board settings.)
You said you can take the chip out of the homebrew board and put it in another arudino and upload it successfully? Try putting an "echo" sketch in it (using the working arduino), then move it back to the homebrew and see if the Serial Monitor will still see typed characters (now, the speed will have to be correct.)
(I've never actually built an S3V3; having done my own design. I'm not sure exactly what is likely to go wrong with it. You mentioned that the LEDs stay somewhat illuminated. Are the resistors to the LEDs the correct values? Transistors in correctly for their particular type? (european transistors tend to have a different pinout than american transistors. As shown on the board, the transistors used have a pinout I would call CBE, while many american transistors are EBC)