Would this lazy zero cross detector work?
Make sure your resistors are rated for the voltage you are applying. Some resistors are only rated at 100V peak so watch this one.

With a total LED resistance of 125 kohm and the specified input capacitance of 50pF you are going to get a basic time error of 6 us - this is equivalent to a low pass filter at the input of fc 25 kHz.

As for the output stage of the opto-coupler, if you use a collector resistor of 75 ohms you might get another delay of about 5 us (turn on time + rise time or turn off time + fall time). In total you might be looking at a total time error of about 11 us.

With a 2k resistor in the collector the delay/rise/fall times are going to extend significantly in proportion to 2k/0.075k i.e. increase maybe 27 times so this takes you to a time-error of 6 us + 27*5 us = 141 us.

You haven't specified what supply you are running the collector resistor at. If 5V then the figures above stand but if 3v3 you could add another 20 to 30% time delay. Read the data sheet - it's got the information in there and I've tried to make the best use of this information in my answer although I was disappointed that the data sheet didn't contain more information on rise/fall times.

BTW 141 us represents a phase error in 50 Hz of about 2.54 degrees. Is this acceptable? 

Bear also in mind that the opto's delay/rise/fall times are specified when the device is NOT in saturation. If the transistor goes into saturation you will find the time errors are significantly increased (i.e. doubled or tripled). To avoid saturation you have to use a low value collector resistor and ensure that the current driven into the LED does not produce an output voltage that goes much below 1V on the collector (maybe limited at 0.5 volts). If the timing is critical then you will have to abide by this and maybe use a comparator after the opto to produce a decent logic signal. Opto's can be a bit tricky!