Before offering my solution let me comment the previous two solutions. Lets call Joey Robert's solution magicFunction1 and Eric's solution magicFunction2.
magicFunction1 is very short and elegant. What I don't like about it is that if I have an very large list of numbers and the first one is already bigger than 10 it still will do all the work of figuring out the largest number which is not needed. This also applies to magicFunction2
I developed the following two solutions:
magicFunction3[lst_, val_] :=
Position[# < val & /@ lst, False, 1, 1] == {}
and
magicFunction4[lst_, val_] :=
Cases[lst, x_ /; x >= val, 1, 1] == {}
Doing a benchmark I found
In[1]:= data = Table[RandomInteger[{1, 10}], {10000000}];
In[2]:= Timing[magicFunction1[data, 10]]
Out[2]= {0.017551, False}
In[2]:= Timing[magicFunction2[data, 10]]
Out[2]= {10.0173, False}
In[2]:= Timing[magicFunction3[data, 10]]
Out[2]= {7.10192, False}
In[2]:= Timing[magicFunction4[data, 10]]
Out[2]= {0.402562, False}
So my best answer is magicFunction4, but I still don't know why it is slower than magicFunction1. I also ignore why there is such a large performance difference between magicFunction3 and magicFunction4.