The theorem concerning existence you are interested in is probably the following comprehensive result for simple graphs (no loops or multi edges): https://en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93Gallai_theorem. There is also an algorithmic approach, which another answer addresses, but if what you are after is a sanity check before you start trying to realize the degree sequence with a graph, then Erdos-Gallai should help.
I would just write a simple program to use the theorem as a verifier for a given sequence. (A possible python implementation is given at the bottom)
But we can also verify by hand of course. In your case, the conditions given determine your degree sequence to be:
$$(4,4,4,3,3,3,3,2,2,2,2,2,2,x,y)$$ where $x \geq y$ and $x,y \in \{0,1\}$.
As you can see from your own work, $(x,y)$ could be $(1,1)$ or $(0,0)$. But the handshake lemma shows that $(1,0)$ is not possible (sum of degree sequence must be even).
Let's work with your sequence, $$(4,4,4,3,3,3,3,2,2,2,2,2,2,1,1)$$.
First of all, the handshake lemma checks out because the sum of the degree sequence is even.
The partial sums of your degree sequence are
$$(4,8,12,15,18,21,24,26,28,30,32,34,36,37,38)$$
The sequence $(k(k-1))$ for $k=1\ldots n$ is
$$(0,2,6,12,20,30,42,56,72,90,110,132,156,182,210)$$
The $\sum\limits_{i=k+1}^{n}\min(d_i,k)$ summation yields the sequence:
$$(14, 24, 26, 23, 20, 17, 14, 12, 10, 8, 6, 4, 2, 1, 0)$$
Summing the previous two sequences we see that
that the RHS sequence in the theorem is
$$(14, 26, 32, 35, 40, 47, 56, 68, 82, 98, 116, 136, 158, 183, 210)$$
Which is everywhere greater than the LHS sequence of partial sums of the degree sequence
$$(4,8,12,15,18,21,24,26,28,30,32,34,36,37,38)$$
This verifies that a graph exists satisfying your degree sequence, which you now know because you constructed just such a graph!
Possible Python implementation of the code:
def erdos_gallai(ds):
n = len(ds)
lhs = reduce(lambda c, x: c + [c[-1] + x], ds, [0])[1:]
rhs1 = [k*(k-1) for k in range (1, n+1)]
rhs2 = [sum([min(ds[i], k+1) for i in range (k+1, n)]) for k in range (0,n)]
for i in range (n):
if lhs[i] > rhs1[i] + rhs2[i]:
return False
return True