Shiladitya - when you update a field within the handles structure, you need to call guidata so that this update is "saved" to the structure for subsequent uses of handles. For example, in your next button callback you could do
function nextButton_Callback(hObject, eventdata, handles)
% do something
% update i
handles.i = handles.i + 1;
% save the updated handles structure
guidata(hObject, handles);
The last line is important - it will save the updated structure so that the subsequent call to the above (or any other callback with the handles input) will receive the updated handles object.