There are a couple of possibilities - notably (1) you've got a dead board or (2) you're not correctly booting into programming mode. Hopefully it's (2)
I guess you probably know that at startup the ESP12 reads the levels on GPIO 0, 2 and 15 in order to decide whether to start in normal or programming mode (see
https://github.com/espressif/esptool/wiki/ESP8266-Boot-Mode-Selection. However, in any of these modes you should see some serial messages from the board at 74480 bps. With a fresh-out-of-the-box ESP12 in 'normal' mode (GPIO 0 high, GPIO 2 high, GPIO 15 low) you should see a 'blast' of characters at 74kbps and then it will switch up to 115200bps and give you an AT prompt.
In order to discount that you have a dead board, the first thing I would do is to double check with a multimeter that you have pins 1 and 2 (gnd, gpio15) wired to 0v, and pins 3, 4, 9, 11 and 16 (gpio2, gpio0, rest, ch_pd, Vcc) wired or pulled up to 3v3 [NB: Espressif say you should use a pullup resistor for gpio2 rather than wiring it directly to Vcc]. You should see the Led flash briefly when you apply the power, and if you hook up the Gnd and Rx pins of the FTDI usb serial adapter to Gnd and TXD on the module you should be able to read the boot messages with a serial terminal programme set to 74000 bps (naturally you'll need to make sure you're connecting to the correct serial device on your PC/Mac).
One possibility by the way is that the module partly boots then dies due to noise on the power lines (it can take a fairly high current during startup) so I'd recommend putting a decoupling capacitor across the power lines close to the device. It sounds like you already know about the importance of making sure your usb serial adapter is in 3v3 mode
Assuming the board is alive, then the next step I follow is to check that esptool.py can communicate with it. To do this, first rewire to bring GPIO0 (pin 4) to ground and re-power the device. Kill your serial terminal program (if it was running) and then run esptool with the following command:
It should say 'connecting' then output some info about the size of the flash memory on the device. If it can't connect then re-check the levels on gpio0, 2 and 15 (should be 0, 1, 0 respectively).
Good luck and keep trying