They standard guarantees this for a raw array, but I can't find anything that would guarantee it for containers.
From [expr.delete] (new wording for C++0x):
If the value of the operand of the delete-expression is not a null pointer value, the delete-expression will
invoke the destructor (if any) for the object or the elements of the array being deleted. In the case of an
array, the elements will be destroyed in order of decreasing address (that is, in reverse order of the completion
of their constructor; see 12.6.2).
std::vector (and in fact, all containers in the standard library, possibly excluding std::array) do not use delete[] to destroy the elements (they use allocator_traits<allocator_type>::destroy on each element individually), so the above guarantee doesn't apply. And I can find no restrictions on std::vector in particular or containers in general, about the order of deletion. For some containers, such a guarantee would be very expensive (e.g. std::forward_list can't iterate the elements in reverse to delete them, and std::map doesn't remember the order in which pairs were added).
From [container.requirements.general] (C++0x wording):
For the components affected by this subclause that declare an allocator_type, objects stored in these
components shall be constructed using the allocator_traits::construct function and
destroyed using the allocator_traits::destroy function (20.6.8.2).