The modulo division may produce some rounding errors (which I found on my system). Addition of a small fraction of time, half the maximum accuracy of the times should fix this, though in essence it is not really any different from what you are already doing:
as.POSIXlt( mytime/1e6 , tz="EST", origin="1970-01-01") + 5e-7
[1] "2013-04-15 10:26:59.64599 EST"
Contrast that with:
mytime=1366039619646000
# Produces rounding error
as.POSIXlt(mytime/1000000, tz="EST", origin="1970-01-01") + (mytime %% mytime)/1000000
[1] "2013-04-15 10:26:59.645 EST"
as.POSIXlt( mytime/1e6 , tz="EST", origin="1970-01-01") + 5e-7
[1] "2013-04-15 10:26:59.646 EST"
And when
mytime=1366039619645991
as.POSIXlt(mytime/1000000, tz="EST", origin="1970-01-01") + 5e-7
[1] "2013-04-15 10:26:59.645991 EST"