Before we start, first two notes:

Using the official GUI in conjunction with a Trezor device is only available for the Trezor model T. If you are using Windows or Mac OS X and run active AV (AntiVirus) software, the AV software will likely quarantine the binaries (i.e. the .zip file (Windows) or .tar.bz2 file (Mac OS X)) you download from the downloads page of the official website. To resolve this issue, I'd advise to use this guide. Trezor has also written their own guide, which includes screenshots and may thus be useful as assistant:

https://wiki.trezor.io/Monero#How_to_use_Monero_with_Trezor

In addition, we have to ensure that we're sufficiently prepared. This entails the following:

This guide assumes you have already initialized your Trezor device and thus generated a 12 or 24 word mnemonic seed. You need to run / use GUI v0.15.0.4, which can be found here, on the downloads page of the official website, or on Github. Make sure your firmware is up to date. Your Trezor needs to be plugged in. You may need to install the Trezor bridge (in case you get an error upon generating the Trezor Monero wallet).

Now that we're sufficiently prepared, let's start! Note that the following instructions are general. If anything is OS specific I'll mention it explicitly.

Browse to the directory / folder GUI v0.15.0.4 is located. Open v0.15.0.4 monero-wallet-gui.app (Mac OS X) or monero-wallet-gui.exe (Windows) or monero-wallet-gui (Linux). If it tries to open an existing wallet, click on the Change Wallet button. This will bring you back to the wizard. On the first page of the wizard, select your desired language. On the second page of the wizard, you will have to select a mode. There are three modes, namely Simple mode , Simple mode (bootstrap) and Advanced . In Simple mode mode, the GUI wallet will automatically connect to a remote node and have a simple interface. This mode excludes the need for the blockchain sync and ensures you can immediately use the wallet. However, it weakens your privacy insofar as the remote node will be able to see your IP address as well as associate any of your transactions with your IP address. Besides, using a remote node does not contribute to the strength and decentralization of the network.

mode, the GUI wallet will automatically connect to a remote node and have a simple interface. This mode excludes the need for the blockchain sync and ensures you can immediately use the wallet. However, it weakens your privacy insofar as the remote node will be able to see your IP address as well as associate any of your transactions with your IP address. Besides, using a remote node does not contribute to the strength and decentralization of the network. In Simple mode (bootstrap) mode, the wallet automatically connects to a remote node whilst syncing your own (local) node in the background. The wallet will subsequently switch to your own (local) node once it is fully synced. This allows you to immediately use the wallet while still eventually using your own (local) node (which is optimal for privacy and contributes to the strength and decentralization of the network). Additionally, this mode has a simple interface as well. This mode is the default and is thus recommended by the developers for new users.

(bootstrap) mode, the wallet automatically connects to a remote node whilst syncing your own (local) node in the background. The wallet will subsequently switch to your own (local) node once it is fully synced. This allows you to immediately use the wallet while still eventually using your own (local) node (which is optimal for privacy and contributes to the strength and decentralization of the network). Additionally, this mode has a simple interface as well. In Advanced mode, you will perform the blockchain sync from scratch (which may take from 10-14 hours (with an SSD) to several days to complete (with an HDD) and requires approximately 75 GB of free disk space) without connecting to a remote node. Advanced mode also contains all features that were deemed as advanced by the developers (and thus were left out of the simple mode). Note that you won't be able to properly use your wallet until the blockchain sync from scratch has been completed. Lastly, Advanced mode allows you to customly set a remote node (in case you, for instance, want to connect to your own remote node). On the third page of the wizard, choose Create a new wallet from hardware device Enter a new Wallet name Make sure the Create a new wallet from device option is selected. Leave the Subaddress lookahead (optional) box blank. Make sure the Device name is set to Trezor Go to the next page. If you have the passphrase feature enabled, you will have to type in your passphrase. On the device, confirm the export of watch-only credentials. Your Trezor Monero wallet will now be generated. This will only take a few seconds. Enter a password for your wallet. Note: this password is not required / needed to recover the Trezor Monero wallet. Proceed to the next page, which will provide an overview (note: there will be an additional setup page in case you chose Advanced mode, please see the Addendum). Press Use Monero . Congratulations, you can now use your Trezor Monero wallet in conjunction with the GUI.

Addendum: (in case Advanced mode was chosen)

On the Daemon settings page you basically have three options. First, you can simply run a local node. This entails performing the full blockchain sync, which may take from 10-14 hours (with an SSD) to several days to complete (with an HDD). Second, you can run a local node and make use of a bootstrap node. This also entails performing the full blockchain sync. However, this option allows you to immediately use the wallet whilst your local node performs the initial blockchain sync in the background. Third, you can use a remote node, which allows you to immediately use the wallet. Using your own (local) node is most advantageous with respect to privacy and security plus it contributes to the strength and decentralization of the network. It, however, requires approximately 75 GB of free space. Furthermore, performing the initial blockchain sync is quite resource intensive and may cause the GUI to feel laggy / buggy. Although, this can be mitigated by applying this guide. Now, practically speaking, you can choose option 1 by leaving all boxes blank and, optionally, specifying a custom Blockchain location . Option 2 is chosen by entering a remote node (a list of remote nodes can be found here in the Bootstrap node box. Option 3 is chosen by first ticking the Connect to a remote node box and subsequently entering a remote node (to reiterate, a list of remote nodes can be found here.

A few final notes:

I'd strongly advise to test the full process first. That is, send a small amount to the wallet and subsequently restore it (using aforementioned guide) to verify that you can recover the wallet. The wallet files are, by default, stored in /Users/<username>/Monero/<wallet-name> (Mac OS X) or Documents\Monero\<wallet-name> (Windows) or /home/<username>/Monero/<wallet-name> (Linux). The .keys wallet file stored on your system contains some settings related to the wallet and your public keys. It does not contain your private spend key. Put differently, the private spend key remains on the Trezor device. You only have to use this guide once (i.e. upon wallet creation). Thereafter, you'd basically use it similar to how you normally use the GUI. That is:

[1] Make sure your Trezor is plugged in.

[2] Open GUI v0.15.0.4

[3] Enter the password to open the wallet.

It's imperative that the closing process of your Trezor Monero wallet is done in this specific consecutive order:

[1] Exit the GUI by clicking on the x (right top).

[2] Unplug the Trezor device.