I am assuming that this problem has been ongoing long enough to rule out a bad tank of fuel or water in the gas....as otherwise there are really only a few possible expectations here given your symptoms.
The first thing I would want to do is make sure the Service Engine Soon light is working when the problem is occurring. The light needs to do a bulb test at key-on to indicate the computer is powering up... no bulb test, the computer is not powering up and the engine will not run. Then to that end the MFI relay and PCM itself would be your only suspects.
If the light is working as it most likely is, then you would be down to expecting either a crank sensor failure (highly likely), fuel pump or regulator failure (moderately likely), immobilizer issue (moderately likely) or cam sensor failure (not too likely).
From this point you would want to check for spark immediately after the problem occurs. If there is no spark on any coil immediately after the problem occurs, then a crank sensor failure is most likely. When these go bad they give intermittent dead periods and are notable for killing the spark and fuel pump operation. If there is spark but only on one coil or two coils, then we would suspect a cam sensor failure or PTU (power transistor unit... "ignition module" it is sometimes called).
If there is spark immediately after the problem occurs, then we would suspect an immobilizer issue or a fuel pressure issue (be it pump or regulator on the rail related). From here you would want to unplug one or more injectors and use a noid light to see if the PCM is pulsing the injectors on. If it is not, then it is an immobilizer issue nearly without exception and would require a dealer visit to analyze as the immobilizer diagnosis is only possible with a factory scan tool. If there is injector pulse and you have spark on all three coils then you would only suspect a fuel delivery issue at that point, and would want to check fuel pump operation while cranking as well as pressure built; if it works but the pressure is low, then the return line would want to be blocked to see if it returns to normal range; if it does, the regulator is bad and if it doesn't the pump is bad.