I assume you're talking about DirectX9. The documentation does not say anything about this specific case, but I can tell you the following:
I just assume the final changes don't get written into the texture until device->End is called
This is a wrong assumption. Think about it, you're assuming all the pixels of all the triangles you draw will be stored 'somewhere' and all your texture fetches executed without any pixels being written back to the render target. This requires an arbitrary amount of memory and is therefore not possible.
In practice:
- the hardware usually processes triangles as they come, many at once
- it updates the frame buffer (which in your case is the texture memory backing) when it wants, assuming there can't be race conditions
So, assuming DX9 does not complain (try it if you really want to know, I don't do DX9 anymore), it will be undefined.
That said, DirectX10 is being more explicit about it (source):
If any subresources are also currently
bound for reading or writing (perhaps
in a different part of the pipeline),
those bind points will be NULL'ed out
to prevent the same subresource from
being read and written simultaneously
in a single rendering operation.
So, in DirectX10, your texture setting will be removed by the API.