I don't know any theorem for that, but I have a relatively simple argument:
If $X$ is convex, then it can be written as the intersection of a family $\mathcal F$ of half-spaces (i.e. the part of the space on one side of a hyperplane). Similarly, $X^c$ can also be written as the intersection of another family $\mathcal G$ of half-spaces.
Now I claim that for any element $F\in \mathcal F$ and any element $G\in \mathcal G$, the corresponding hyperplanes must be parallel. This is because the union $F\cup G$ contains $X\cup X^c$, which is the whole space.
Consequently, assuming $X$ is neither empty nor the whole space, all cutting-hyperplanes in the family $\mathcal F$ are parallel, and similarly for $\mathcal G$. This implies that $X$ is a half-space.
I somehow ignored the difference between "open" and "closed" half-spaces, but this is unimportant, and we can of course change the condition to the closures of $X$ and $X^c$ being convex.