You have two problems. The first one is that your sed command is not doing what you're expecting. Let's fix that first. I guess you want to write the user in bold green, and the rest in default unbold. This should be better:
#!/bin/bash
bold="\e[1m"
unbold="\e[0m"
green="\e[32m"
default="\e[39m"
who | sed "s/^\([[:alpha:]_]\+\)\(.*\)/$bold$green\1$default$unbold\2/"
Or is it really better? you see the ugly codes instead of the nice colors. And this is your second problem. This is how we'll fix it:
#!/bin/bash
bold=$'\e[1m'
unbold=$'\e[0m'
green=$'\e[32m'
default=$'\e[39m'
who | sed "s/^\([[:alpha:]_]\+\)\(.*\)/$bold$green\1$default$unbold\2/"
or, if you don't like ANSI-C quotings:
#!/bin/bash
bold=$(echo -e "\e[1m")
unbold=$(echo -e "\e[0m")
green=$(echo -e "\e[32m")
default=$(echo -e "\e[39m")
who | sed "s/^\([[:alpha:]_]\+\)\(.*\)/$bold$green\1$default$unbold\2/"
Note. It is considered very bad practice to use uppercase variable names in bash. I know you'll see a lot of people doing it, but it's really wrong. That's why I lowercased all your variables.