Let $V$ be a real inner product space of dimension $n$ where the inner product is non-degenerate, but not necessarily positive-definite. (Thus there is an adjoint map $^\dagger$, and in the case that $V$ is Euclidean, the adjoint in the standard basis is simply transpose $^T$.)
An integer lattice $L\subset V$ is the integer span of $n$ linearly-independent vectors inside of $V$ such that $x\cdot y\subset\mathbb{Z}$ for all $x,y\in L$.
An integer lattice is unimodular if, for any (equiv. every) basis $\{x_i\}_{i=1\ldots n}$ of $L$, the Gram matrix $A_{ij}:=x_i\cdot x_j$ has determinant $\pm 1$ (i.e. the determinant is a multiplicative unit in $\mathbb Z$).
The dual lattice $L^*\subset V$ is the set of all $y\in V$ such that $x\cdot y\in\mathbb Z$ for all $x\in L$.
A lattice is self-dual if $L^*=L$.
It's straightforward to see that if a lattice is self-dual then it is unimodular. (Integrality of $L$ follows from the definition of the dual, and it must be unimodular, and the determinant must be $\pm 1$ since the Gram matrix of $L^*$ is $A^{-1}$.) It is widely claimed (e.g. here) that unimodular implies self-dual, but why is this so?
A matrix is unimodular if it has integer entries and determinant $\pm1$ Thus a lattice is unimodular iff some (equiv. any) Gram matrix is a unimodular matrix.
The key property of unimodular matrices is that they are invertible over the integers. For any matrix $A$, the adjugate matrix $\mathrm{adj}(A)$ satisfies $A\, \mathrm{adj}(A) = \det(A)\, I$, and since $\mathrm{adj}(A)$ is defined in terms of cofactor matrices, if $A$ is integral, then $\mathrm{adj}(A)$ is integral. Therefore, if $A$ is unimodular, then $A^{-1}=\mathrm{adj}(A)/\det(A)$ is integral.
Given a basis $\{x_i\}_{i=1\ldots n}$ of $L$, define a linear map $M:\mathbb Z^n\to V$ by
$$M\left(\begin{array}{c} a_{1}\\ \vdots\\ a_{n} \end{array}\right):=a_1 x_1+\cdots+a_n x_n.$$
With respect to a basis of $V$, the linear map $M$ is represented by an $n\times n$ matrix whose column vectors are the $x_i$. Then the Gram matrix of $L$ is $A=M^\dagger M$.
The dual basis $D$ of $L^*$ is given by the columns of $D=M(M^\dagger M)^{-1}$. (To verify this, simply compute that $M^\dagger D=I$.)
The lattice $L$ is the image of $\mathbb Z^n$ under $M$, and similarly the lattice $L^*$ is the image of $\mathbb Z^n$ under $D$. Thus
$$L^* = D \mathbb Z^n = M(M^\dagger M)^{-1} \mathbb Z^n.$$
Since $M^\dagger M$ is the Gram matrix of $L$, it is unimodular, and so is $(M^\dagger M)^{-1}$. Thus $(M^\dagger M)^{-1} \mathbb Z^n = \mathbb Z^n$, and therefore, $$L^* = M \mathbb Z^n = L.$$