The upgrade from EE2 to EE3 is a major step - from EE3 to EE4 not such a big one. So getting your site to EE3 is the thing to focus on. How hard this will be will very much depend upon how your EE2 site is set up, and in particular what add-ons you are using.
To be able to upgrade to EE3 you need to get your copy of EE2 up to a late version (I think 2.10.x) first - and this in turn may also break some add-ons / site functionality.
When you get to 2.10.x you then need to work out what add-ons you actually use on the site (rather than just have installed), and which of these you can update. If you use Playa / Matrix, you might also want to consider migrating these to EE2 Relationships / Grid fields (there is a converter available from Ellis) as this migration works well, and will save you an upgrade fee on Playa / Matrix. Once you have a list of add-ons with no EE3 version, you need to work out migration / mitigation strategies for each. If you post a list of these here, people might be able to offer guidance on how to go about it: typically either find a substitute or re-write your templates / code to avoid.
If your site uses custom / self-written add-ons then you will need to get these fixed before you can migrate too (it might not be a huge job - but without some work no EE2 add-on will work under EE3 - as EE3 needs additional files not present in EE2 add-ons).
When you get this done, you can try and migrate to EE3. This itself is not without problems (look elsewhere here for posts about this) - in theory it works pretty automagically, but if you have anything even slightly odd about your set up be prepared for a block of time to actually getting the migration to work - one red-flag seems to be use of "Master Config" - which seems to be a source of many migration issues.
For example, EE3 does not offer much help to the add-on migration issue - if there are incompatible add-ons present during the migration, most likely you'll simply get a 'white screen of death' from your site after the migration: EE3 does not attempt to 'spot' that an add-on is not compatible with EE3 and skip loading it (even though to do so would be easy enough, as EE3 could be written to look for the special EE3 add-on files before loading the add-on for example, and skip it if they are not found).
Once you get to EE3, congrats! Now all you need to do is migrate this to EE4. Unfortunately despite promises from Ellis Labs that EE3 to EE4 migration would not 'break' add-ons this appears not to be true in practice - and all those 'major' add-ons (e.g. Assets etc.) will need to be updated again to EE4 versions. Whether this costs you (again) depends on which vendor the add-on comes from, but it is without doubt a pain. More concerning is that since these 'major' EE3 add-ons do not work under EE4, it is hard to be confident that any other EE3 add-ons will work - almost certainly you'll have to spend time debugging the add-ons you use again to get the migration complete.
The original EE2-EE3 migration was worse (because EE3 was launched before anyone had updated any add-ons, and so for the first year or so migration was very difficult for most sites). So many seemed to have used this as a trigger to abandon EE2 and rewrite the site for a new CMS (either EE3, or something else with many similarities like Craft). It might make sense for you to include a 'stick or twist' decision in your thinking before you start work on the migration in anger. If you decide to go ahead it might also be sensible to get someone who has done the migrations before involved - there would doubtless be time and cost savings leveraging someone else's experience of this workflow.