The comments on your question already give a working solution, but I thought it would be useful to explain how and why it works for the benefit of future readers. I'd also like to show you how you can understand and diagnose these problems for yourself in the future.
Your NDSolve code is actually correct, and runs fine on my system. Based on the comments so far, here is what I think happened: prior to evaluating your call to NDSolve, you must have accidentally evaluated something containing the expressions
x'[t] = 0.5*y[t] - 0.1*x[t]*y[t]
y'[t] = 0.1*x[t]*y[t] + 0.5*y[t] - 0.25*y[t]
z'[t] = 0.25*y[t]
with single = instead of double ==. These two operators have very different meanings.
= is the Set operator; an expression of the form x = y tells Mathematica to replace x with y wherever it appears.
== is the Equal operator; an expression of the form x == y is a logical assertion that x and y are numerically equal.
Crucially, it is the latter form that you want to use with functions like Solve, DSolve, RSolve, and Reduce. When you evaluated x'[t] = 0.5*y[t] - 0.1*x[t]*y[t], you effectively told Mathematica "whenever you see x'[t], replace it with 0.5*y[t] - 0.1*x[t]*y[t]." This caused problems when you entered your system of equations:
{x'[t] == 0.5*y[t] - 0.1*x[t]*y[t], ...}
Here, Mathematica did as it was told and replaced x'[t] with 0.5*y[t] - 0.1*x[t]*y[t]:
{0.5*y[t] - 0.1*x[t]*y[t] == 0.5*y[t] - 0.1*x[t]*y[t], ...}
and since these two expressions are identical, Mathematica told you that they are indeed equal:
{True, ...}
Similar things happened for your other two equations, causing the system to become
{True, True, True, x[0]==99, y[0]==1, z[0]==0}
which NDSolve obviously didn't know what to do with.
Now here's the tricky part: why didn't Clear[x, y, z] solve the problem? Here, you have to understand that many of Mathematica's syntactic structures are actually shorthands for longer forms. In particular, x'[t] is actually a shorthand for Derivative[1][x][t]. You can check this by asking Mathematica for its FullForm:
FullForm[x'[t]]
(* => Derivative[1][x][t] *)
This means that whenever you evaluate an expression of the form x'[t] = ..., the RHS is not associated with the symbol x, but the symbol Derivative! You can confirm this by asking Mathematica for all the definitions associated with x:
??x (* shorthand for Information[x] *)
(* => Global`x *)
This shows that Mathematica doesn't know anything about x other than that it exists in the Global environment. However, if you evaluate
ClearAttributes[Derivative, ReadProtected];
??Derivative
you should see your definitions for x'[t], y'[t], and z'[t].
With this in mind, solving your problem is simple. All you need to do is remove the values associated with x'[t], y'[t], and z'[t]. One way to do this is with Unset:
x'[t] =.
y'[t] =.
z'[t] =.
Alternatively, if you have no other definitions associated with Derivative you wish to keep, you can simply Clear[Derivative]. (This won't mess up any of Mathematica's differentiation capabilities--it'll still know that Sin' == Cos.)
x'[t] == 0.5*y[t] - 0.1*x[t]*y[t]) which told Mathematica that they are identities (hence,True). Try either clearing the variable definitions (Clear[x]etc.) or just restarting the kernel. – Virgil Apr 17 '15 at 20:28=) the equations rather than setting them equal (==). Try to unset each primed variable:x'[t] =.; y'[t] =.; z'[t] =.;. – Virgil Apr 17 '15 at 20:56