The main thing at the moment is you need to do something like composer require guzzlehttp/guzzle:"6.3.0 as 7.4.0" just to get the civi files downloaded, but that's obviously not the right thing to do.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Drupal 10 will be released in June. I expect civi will want to support both guzzle 6 and 7 for a while - fortunately the namespace is the same. Just doing a quick grep it doesn't seem like it's used for anything too fancy, so probably to start just updating composer.json to allow ^6.3 || ^7 and then testing out:
some payment processors
Have done paypal (it doesn't succeed but I can see it's calling guzzle and getting a response and it's the same error I get with current civi, so probably a misconfiguration on my end)
system status check ("the log file should not be downloadable")
So this probably requires a bit of work in CiviCRM to create some sort of facade to cover the inner workings of both guzzle versions. I do think this complicates things quite a lot. So I have not an easy solution in my mind.
No I'm suggesting it doesn't require that, because you can still just call new GuzzleHttp\Client(); and use it the same way. So it just requires testing it still works.
Noting that in drupal 9.4 they have loosened guzzle constraints to allow 7: https://www.drupal.org/node/3268032 and https://git.drupalcode.org/project/drupal/-/blob/9.4.x/composer.lock#L555. I haven't tested yet but I think this means that installing new drupal 9 sites as of around June 15 will install guzzle 7 at first, and then the civi install will fail, and you might have to do the usual fighting with composer to get a working site. I'll run some install/upgrade tests to see what happens.