You can't. The signature of Iterator::next() doesn't allow that.
Your immediate problem in the above code snippet is that you claim to be returning a &'a Vec<&'a T>, but your struct itself stores the Vec. This means that in order for the returned reference to have lifetime 'a, the reference to the struct itself would have to have that lifetime, i.e. &'a mut self. However, that can't be the case, because the lifetime of the struct is what it is, and no amount of lifetime annotations can change that – it will never be the same as 'a for an arbitrary, caller-specified lifetime 'a.
Generally, a borrowing iterator should not try to own the buffer it is borrowing from. You should store a &'a [T] instead of a Vec<&'a T>.
What I'm intending to do is to create an iterator that iterates all fixed-length-subset of a vector.
It iterates over &Vec other than owned data Vec to avoid extra memory allocation. So, the Iter has a buffer to store data and the buffer (Vec<T>) should be owned by Iter, I think.
One unconventional option is to use Item=Rc<Vec<&'a T>>, and call Rc::make_mut() inside your next() function. This will avoid allocations in the common case that the caller drops one result before getting the next one, but will allocate and clone the buffer if they do.
It's impossible to return a reference to something that's not stored. In particular, it's impossible to return a reference to disjoint part of slice, since, e.g., there's no [1, 4] in [1, 2, 3, 4].
In that case, you will need to return an owned array or Vec of references to the given elements, since, as @Cerber-Ursi pointed out, there is no way to return a non-contiguous subslice directly.