I believe the idea is that in quantum mechanics, time evolution is described by a unitary operator, and because it is unitary, it must have an inverse,
and, therefore, the state after must determine the state before.

Which, of course, reduces the question to "why does time evolution have to be unitary?"

And, one definition of what it means for an operator U to be unitary, is that it preserves inner products, and is surjective.

Why should it preserve inner products?

Well, a state should have norm 1, i.e. the inner product of it with itself should be 1, and the state in the future should also have norm 1.
(this 1 can be thought of representing the probability that "something/anything happens", which should always be 1.)
And also, the time evolution should be linear (that things are done with linear operators is nearly the core assumption of QM ime ), so therefore it should also preserve the norm of other vectors.
And, the polarization identity allows one to recover the inner product operation from a norm which came from an inner product,

In what follows, "<" and ">" are angle brackets, not less than or greater than signs.
also, by ||x||^2 I mean the norm squared of x, i.e. the inner product of x with x, i.e. <x | x> .
The polarization identity (a theorem of math, not specific to physics) states that

<x | y> = (1/4)( ||x + y||^2 - ||x - y||^2 - i||x + i y||^2 + i||x - iy||^2)

So, in particular, for some linear operator A,

<A x | A y> = (1/4)( ||A x + A y||^2 - ||A x - A y||^2 - i||A x + A i y||^2 + i||A x - A iy||^2)
= <A x | A y> = (1/4)( ||A (x + y)||^2 - ||A (x - y)||^2 - i||A(x + i y)||^2 + i||A(x - iy)||^2)

And, if A preserves norms, i.e. if for all x, ||A x|| = ||x|| , then therefore

<A x | A y> = (1/4)( ||A (x + y)||^2 - ||A (x - y)||^2 - i||A(x + i y)||^2 + i||A(x - iy)||^2)
= (1/4)( ||x + y||^2 - ||x - y||^2 - i||x + i y||^2 + i||x - iy||^2)
= <x | y> .

So, by the polarization identity, if a linear operator preserves norms, it preserves inner products.

So, if you accept the "time evolution is linear, and the state should always be a unit vector in a Hilbert space", then it follows that time evolution should preserve inner products.

The only thing remaining is, I guess, the assumption that time evolution is surjective. I.e. for any state, there is some state which should be able to lead to it.

I suppose one could question this assumption?

But I don't think giving this up would result in allowing the loss of information, because these requirements still imply that time evolution should be injective.
If two states x and y were both sent by time evolution to the same state z,
then, if x and y are not equal to each-other, then x-y is not zero, and it can be re-scaled to have norm 1, (specifically, giving us (x-y)/||x-y|| ) and be a valid state,

and the time evolution would send (x-y)/||x-y|| to (z-z)/||x-y|| = 0.
Which would mean, it would send a valid state to, uh, nothing.
This contradicts our assumption that it preserves a norm of 1.
To interpret this a bit, if it did fail to be injective in this way, sending both x and y to z, then if the current state were (x-y)/||x-y|| , then in the future, after applying the time evolution operator, the probability that "anything" would be 0, which is absurd (and also contradicts our assumption of preserving the norm).

So, if [the state is represented by a vector in a Hilbert space, and the Born rule applies for probabilities, and time evolution is linear], then time evolution has to preserve the inner product and therefore also be injective.

This I think basically justifies the "information is preserved" idea.

You might ask "ok, how would you modify quantum mechanics in a way that did allow time evolution to not be injective?"
and, I'm not sure what the appropriate way to do that would be.

Hm, I suppose maybe you could like, use states which are technically different, but not in ways that any observable could ever (even theoretically) distinguish between?

(are selection sectors relevant to that? I'm not sure.)