When you make the first cut, the bigger piece has length $p$ that is uniformly distributed in $[\frac12, 1]$. (And so the smaller piece has length $1-p$ uniformly distributed in $[0, \frac12]$, but of course not independent of the length $p$ of the bigger piece.)
Similarly, when you cut this piece of length $p$ at a uniformly chosen point, the smaller piece of the two has length $q$ uniformly distributed in $[0, \frac{p}{2}]$.
The smallest of the three pieces is therefore of length $\min(q, 1-p)$. We can calculate its expected value as
$$ \int_{1/2}^{1} \int_{0}^{p/2} \min(q, 1-p) \;(\frac{1}{p/2}dq) \;(\frac{1}{1/2}dp) = \int_{1/2}^{1} \frac{4}{p} \int_{0}^{p/2} \min(q, 1-p) \;dq \;dp$$
If $p/2 \le 1-p$ (which happens when $p \le 2/3$), then as $q \le p/2 \le 1-p$, it is always the case that $\min(q, 1-p) = q$, and so the inner integral becomes $$ \int_{0}^{p/2} \min(q, 1-p) \;dq = \int_{0}^{p/2} q \;dq = \frac{p^2}{8}.$$
Else, for $p/2 > 1-p$, the inner integral can be split as
$$\begin{align}
\int_{0}^{p/2} \min(q, 1-p) \;dq
&= \int_{0}^{1-p} q \;dq + \int_{1-p}^{p/2} (1-p) \;dq \\
&= (1-p)^2/2 \;\;+\;\; p(1-p)/2 - (1-p)^2 \\
&= p(1-p)/2 - (1-p)^2/2
\end{align}$$
So the outer integral is
$$\begin{align}
&\int_{1/2}^{1} \frac{4}{p} \int_{0}^{p/2} \min(q, 1-p) \;dq \;dp \\
&=\int_{1/2}^{2/3} \frac{4}{p}\frac{p^2}{8} \;dp + \int_{2/3}^{1} \frac{4}{p}(\frac{p(1-p)}{2} - \frac{(1-p)^2}{2})\;dp \\
&=\int_{1/2}^{2/3} p/2 \;dp + \int_{2/3}^{1} \left(2(1-p) - \frac{2(1-p)^2}{p}\right) \; dp \\
&= \frac{7}{144} + \frac{1}{9} - (\log(9/4) - 7/9)\\
&= \frac{15}{16} - \log\left(\frac94\right) \approx 0.12657
\end{align}$$
This looks like a really strange answer, but it is roughly confirmed by the following simulation:
#!/usr/bin/env python
import random
num_samples = 0
sum_samples = 0
for num_samples in xrange(1, 100000000):
r1 = random.uniform(0, 1)
p = max(r1, 1 - r1)
r2 = random.uniform(0, p)
q = min(r2, p - r2)
cur_sample = min(q, p - q, 1 - p)
sum_samples += cur_sample
average = sum_samples / num_samples
if num_samples % 100000 == 0:
print 'Average is %.5f after %d samples' % (average,num_samples)