You need to use the NeighbourhoodGraph[] function.
If g is a Graph and v is the starting vertex, you can use
NeighborhoodGraph[g, v, d]
to get a subgraph of g including v and all nodes reachable in d hops.
One completely unobvious and potentially serious problem with NeighborhoodGraph is that is will automatically recompute the layout of the graph it returns (I really don't understand why it does this). As a result, this function is much much slower than it should be. This can be a serious problem is you use it in a loop (Table, etc.), but it doesn't show up during interactive use. The issue and the workaround is described here:
http://mathematica.stackexchange.com/q/14490/12
The workaround:
NeighborhoodGraph[g, v, GraphLayout -> None]
I am very much hoping that this problem will be fixed in future versions ... Users can't be expected to be able to find the cause of this (significant and unintuitive) slowdown on their own, and if layout calculations and neighborhood calculations are coupled, that is a significant usability problem.