Goal require incentives, if you are not convinced enough that it will do you any good save relieving you from your supposed moral obligation, I'd say quit it... And quick too. There's no moral obligation in a job besides doing good while you are at it. Why torture yourself over a job that you don't like and don't value you as you deserve (aka compensate adequately)?
its never worth it to stay for guilt.. felt that before but whatever the problem they'll adjust. i do think it is necessary to let them know that you want to move on, give them a set date eg. 2 months and say you'll help train up the new guy or whatever but you DO need to move on because bottom line you find you are doing more than required and not being paid enough or on time. If they respect you (hopefully they do) they'll discuss what they can do for you else they'll look for the new guy. But it's important to Stay strong !! i know the guilt trip is hard, but all businesses need to spend money to train their staff up. & it's reality that staff move on. If the boss lays it on hard, negotiate, say that if you werent put under all this pressure and you get paid timely and more that this wouldnt be a problem.. that you'll stay.. sorry have no idea about the visa or how that really impacts so cant give any advice. (does that affect the holding power he has over you??)
If I were in your position, I would stay for the duration of the 2 years because it will look good on your resume. You can also choose to work at home more often if you are tired of the office environment. If you do decide to stay, I would not stay longer than the duration of the 2 years. The boss is not paying you enough for the added work that you do and is trying to save himself money by having you do multiple jobs. Whatever you decide to do be a professional about it. Your boss may be an a** but he puts a lot of trust in you so you should at least address the issues that you have personally to him. Whichever company you decide to work for after this company, you will always have issues with your boss and you need to learn how to address your issues to your boss because if you do not learn how to address your issues to your boss, you will probably be unsatisfied wherever you go.
if you get so much freedom in your job, you should consider working less for the amount he pays you. But seeing as you feel guilty and such, you might not be one to purposely slack off on the job.
ha ha, i was doing that for a while, but i didn't think that was fair yes, but i thank people for the support honestly this is not the case in my field in this area half the software engineers in the seattle area are contractors, where their contracts do not last more than one year, and are encouraged to float around, so if they saw me with 2 years they would be amazed