If both the eigenvector of $S_z$ and $\hat x$ form a basis for our Hilbert space, how can it have different dimensions? In almost all the books on Quantum Mechanics, it is stated that 

if $|\alpha \rangle $ is a ket describing the state of a system, then
  any observable has a set of eigenvectors s.t those eigenvectors form a
  basis for the Hilbert space of all possible states $|\beta \rangle $
  that that system can be in.

However, if we consider a silver atom, $|S_z + \rangle$ is a possible state for that atom, and $|S_z \pm \rangle$ form a basis for the Hilbert space, since they are all the eigenvectors of $S_z$, so the dimension of our Hilbert space should be $2$.
However, if we consider the basis obtained by the eigenvectors of $\hat x$, we have infinitely many vectors, so the dimension is infinity, but these two statements contradicts with each other, so what am I missing in here ?
 A: Let us first be clear what the Hilbert space for a spinning particle with spin $s$ and position is: If $H_s$ is the Hilbert space of dimension $2s+1$ on which the spin operators live - the spin space - and $H_x$ is the ordinary position space (i.e. any separable Hilbert space with an irreducible representation of the canonical commutation relations on it, e.g. $L^2(\mathbb{R})$), then the total space of states of the spinning particle is $H_x\otimes H_s$, where $\otimes$ is the tensor product. The operators on $H_x$ and $H_s$ extend to this space as $x\otimes \mathbf{1}_s$ and $\mathbf{1}_x\otimes S_i$, where $\mathbf{1}_i$ is the identity on $H_i$. So, for the spinning particle, you're actually taking about different operators when you say "position operator" or "spin operator" than if you were talking about $H_x$ or $H_s$ alone.
If your Hilbert space has both position and spin operators, then just writing $\lvert +\rangle$ to denote a certain value for spin doesn't make any sense - having a certain eigenvalue for spin does not uniquely identify a state, just like saying that a vector has eigenvalue 1 for the matrix
$$ \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{pmatrix}$$
does not pick out a one-dimensional subspace, but a two-dimensional one. If the eigenspace associated to an eigenvalue is not one-dimensional, you can't use that eigenvalue to label a state uniquely.
In the case of a spin 1/2-object with position, the position operator is doubly degenerate - to each eigenvalue $x_0$ you have a space spanned by the states $\lvert x_0,+\rangle = \lvert x_0\rangle \otimes \lvert +\rangle$ and $\lvert x_0,-\rangle = \lvert x_0\rangle \otimes \lvert -\rangle$, which are now the state with eigenvalues $x_0$ for $x$ and $\pm1/2$ for $S_z$. Conversely, the spin operator is infinitely degenerate - to each eigenvalue $\pm1/2$ there are infinitely many states with that value.
In general, what you're looking for is the idea of a complete set of commuting observables (CSCO): If you have a CSCO with operators $A_i$, then that means that any given list of eigenvalues $a_i$ corresponds to a unique state, which we would usually denote $\lvert a_1,a_2,\dots,a_n\rangle$. In the case of a spinning particle with position, position and spin form such a CSCO.
