C: definitely the assembly shop, if you have the wallet for it. That's for you to decide. Ask some quotes, and decide if doing it yourself is worth the effort. Since this is a hobby project you may think your time is free, but then it has to stay fun as well, hasn't it?
Just got this in a mailing from DesignSpark: fundraising may get you started to have it done by a shop. Erik raised 313 218 dollar for a 5 000 dollar target.
(end of edit)
Alternatively, B: Again, get a quote for a stencil. Yet, even applying the solder paste manually will take less time than hand soldering, which I would not recommend: the resistors and capacitors are not much of a problem, but the ICs may take quite some time if you want to do it proper, i.e. all pins soldered and no short-circuits.
Not A: it takes too long and it's messy. I would only do it myself if I could use the oven.
Remember that Jobs and the Woz also hand-assembled their first batch of Apple computers :-)
I am working for such a company but am mainly situated in the development, so I have some insight but there are probably people out there who know much more:
When it comes to testing, we follow various approaches. Basically we start with AOI (Automated Optical Inspection). This is rather cheap and reveals many errors before any further steps are done which require the board to be powered.
The next step is checking electrical connections. We do this in a few different ways, it usually depends on the amount of test points available and if the board was designed for testing (yes, usually no one cares for that in advance). The methods we use most are:
- Flying Probe (basically an automated way of contacting pins and checking if the resistance meets expected values). This also comes relatively cheap since the programs can be created from netlists which have to be specified by the customer.
- Boundary Scan: The Flying Probe can mainly contact test points or larger points such as resistors, ... if there is no available point to touch it on the PCB, the Flying Probe is of no use. To test Inter-IC connections we mainly rely on Boundary Scan Tests if the Controller supports these. But they have their limits as well. Also, programs can be "written" automatically but need to be adapted.
- In-Circuit-Tests: This is probably the most extensive test method we use (and also the most expensive). Basically we build an adapter which will host the DUT and contacts the various testpoints. Using integrated Boundary Scan techniques and stimulating digital and analog signals nearly every mode of testing is possible. E.g. it is also possible to boot the board to some bootloader and execute tests available in the bootloader, test Ethernet connections, test USB connections, ... No need to say that this comes at a cost.
I am sure there are even more possibilites of testing available but these cover the requirements we get from our customers quite well. Still, 100% testing is not possible.
It's clearly to get rid of moisture, probably to keep the steam from pushing BGAs or CSP packages off the board (maybe from moisture trapped in tented vias, microvias or other places), but I didn't look into all the possible reasons deeply.
You might want to be a bit careful with this- 24 hours exceeds the baking guidelines in IPC-1601, so solderability may be adversely affected unless it's ENIG.