A line drawn through the origin intersects S in a closed line segment. The segment is closed and bounded because S is compact.
Let r(u) be the radius of S, as a function of direction. This defines the surface of S. As you walk about, there are no valleys or craters, because S is convex. There may be a mountain, or even a sharp corner, e.g. when S is a cube, but you can't fall into a hole.
Walk in a particular direction, all the way around S, and the vector u traces out a circle. Along this path, r(u) is continuous. Suppose it is not continuous at r(u0) = h. Near u0, r remains above or below h±ε infinitely often. If the elevation remains low, then h looks like a step up on the surface. Draw a line from h to a nearby point at h-ε, and this line passes through empty space. Since S is convex, this is impossible. Therefore r remains above h+ε, on at least one side of u0. Draw a line from a high point near h to a point on the other side. Whether the other side is high or low, or level with h, the line still sails over the top of h at u0. Once again S fails to be convex. Therefore the path along S is continuous in any direction.
It may be possible to parlay this into a proof that the surface of S is continuous, but I can't seem to fill in the details. Fortunately this theorem is usually applied to simple shapes such as polyhedra, where the surface is piecewise smooth. Volume is calculated by traditional integration, and there is no trouble.
Cut S into pieces, by using the hyperplanes of the lattice. In other words, build the base cell of the lattice and let it tile space. Each cell that intersects S cuts out a piece of S. Translate this piece back to the base cell at the origin. Thus S may be cut into many pieces, and all those pieces are carried back to their corresponding locations in the base cell.
Although there might be a lot of pieces, the number of pieces is finite. This is because S is bounded. It is contained in a large bounded region in Rn, and the number of cells in such a region is finite.
If S were cut into infinitely many pieces, with volumes approaching 0, it might be possible to put those pieces back together to make something smaller than S. It's counterintuitive, but you can reduce the volume of a shape just by cutting it up and reassembling the pieces. However, nothing like that can happen here, because the number of pieces is finite. The volume of S is indeed the sum of its pieces.
Suppose these pieces do not overlap in the base cell. They may share a border, but they don't overlap. The volume consumed by these pieces exceeds v, even though they live in a cell of size v. This is a contradiction, hence at least two pieces overlap.
There are points x and y in S that map to the same point in the base cell. Thus y-x is w, a vector in our lattice. Since S is symmetric it also contains -x. Let z = -x and write y+z = w. The midpoint of y and z, which is (y+z)/2, equals ½w. By convexity, this midpoint lies in S. Finally, expand S by 2, resurrecting the original shape. Now S contains y+z, or w, which is a nonzero lattice point.