Rise & fall times can't be truly zero due to the way that SPICE works. A "zero" risetime by definition will have an infinite dV/dt. This doesn't make sense from the perspective of the solver, which in the case of LTSpice is a modified trapezoidal method. The tightest risetime you can muster will be the smallest timestep you use (dt).
This is OK, since in the real world risetimes aren't zero either. Even incredibly high speed digital communications buses will have rise times in the range of tens of picoseconds, and most practical signals the average EE deals with will be in the single or double digit nanosecond range.
For practical purposes, you shouldn't worry too much about sharp risetimes in SPICE. It can actually be detrimental, since it will (1) slow down your solver by requiring a tighter timestep, and (2) may introduce numerical instability. If I want a sharp risetime, I'll usually set the risetime on pulse trains to two or three orders of magnitude less than the period of the pulse, and then forget about it.
For more information on how LTSpice works internally, Mike Engelhardt (author of LTSpice) has a great blog entry: http://www.linear.com/solutions/5739.
EDIT: jonk in the comments above pointed out this very useful LTWiki link describing the default behaviour when zero risetime is specified: http://ltwiki.org/index.php5?title=Most_frequently_asked_questions_for_beginners#I_have_a_pulse_source_in_my_schematic_with_zero_transition_times..C2.A0_LTspice_only_shows_slow_transition_times_of_2ns..C2.A0_What.27s_going_on_here.3F.